Друзья!!! Выручите брата по оружию..

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
konstantine
ефрейтор
Сообщения: 55
Зарегистрирован: 2009-03-14 11:51:17

Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение konstantine » 2010-07-05 5:56:30

Первым делом канешно вырожаю огромную благодарность всем пользователям этого форума, а особенно низкий покло его хозяину lissyare - ТЫ НАСТОЯЩИЙ МУЖИК.

А теперь о своей беде.
Случилось горе - сгорел кондиционер в серверное. Когда ещё только подходил к серверной уже думал: "Если открою дверь и обдаст жарой и духотой - сдох кондишен, следовательно Скази контроллеры перегрелись и винты повылетали из райдов...." Как говориться опыт не пропьёшь всё так и было..... лежало три сервера ПОЛНОСТЬЮ и ост по 1-2 вылетевшими винтами. Кароче в итоге полностью был потерян почтовый сервер, т.к. до этого я ещё ни разу не занимался почтой, тем более не подымал, то поднять тут же всё заново было лично для меня сложно.
Вооружившись opennet`ом и канешно этим lissyara`овским сайтом, а особенно
http://www.lissyara.su/articles/freebsd ... amassasin/ и мануалы по exim чтоб хоть как то разобраться http://www.lissyara.su/doc/exim/4.70/ всё было доднято, за выходные протестированно и работает как надо...
НО если бы меня всё устраивало я бы тут не кричал о помощи. Беда то в том что вместе с почтовым сервером пропали все письма за 8!!! лет видать за эти годы никто не делал или перестал делать бекап почты... Все письма всё ещё храняться ЛОКАЛЬНО у пользователей на жёстких дисках выкаченные по протоколу imap. Так вот когда пользователь цепляется к новому серверу по imap протоколу, то видя что на новом почтовике нету СТАРЫХ писем, которые сейчас хранятся у себя на hdd, почтовый клиент удаляет письма с hdd диска пользователя, тем самым лишая последнего шанса сохранить утерянные письма....
Что удалось нарыть:
Если цепляться по протоколлу pop3, то тогда почтовый клиент будет сохранять письма на локальном жёстком диске и добавлять новые с нового почтовика, но по default`у при подключении все клиенты выкачивают с удалением новые письма с сервера, если же в ручную не настроить "поставить галочку оставлять копии на сервере". Данный подход сложен тем, что 99% всех юзвере зацеплены по imap`у и оббегать их лично для меня это тяжко т.к. ящиков ~500 канеш юзверей поменьше, но не меньше 300-ста + вся беда продолжается с четверга и юзвери реально уже переплотились в ЗВЕРЕЙ, я боюсь идти с ними на физичиски контакт т.к. их много я ОДИН(все ост. напарники в отпусках).... хотя многие из них сами меня побаиваются за мою "не адекватную", с их точки зрения, критику в их сторону....

Может есть какая нить гайка в настройке courier-imap или других курьер (напр. dovecot) серверов для того чтобы сообщать почтовым клиентам не удалять старые письма с локальных дисков клиентов.


Всем откликнувшимся заранее огромный респект.
@lissyara: Решений "искаропки" под конкретную задачу - катастрофически мало.
Любое боле-мене серьёзное решение - это кручение коробки под себя.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
konstantine
ефрейтор
Сообщения: 55
Зарегистрирован: 2009-03-14 11:51:17

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение konstantine » 2010-07-05 6:54:47

Ребят всё разобрался, не возможно сделать то что я хочу для IMAP, т.к. имап является протоколом ПРОССМОТРА дирректорий на почтовом сервере, он локально только заголовки писем хранит, а вот pop3 выкачивает письма полностью
@lissyara: Решений "искаропки" под конкретную задачу - катастрофически мало.
Любое боле-мене серьёзное решение - это кручение коробки под себя.

_Попов
проходил мимо

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение _Попов » 2010-07-05 7:18:56

konstantine писал(а):... т.к. имап является протоколом ПРОССМОТРА дирректорий на почтовом сервере, он локально только заголовки писем хранит...
почему у меня тогда письма сохраняются после просмотра в файле (клиент Thunderbird):

Код: Выделить всё

...\profile\ImapMail\НазваниеДомена\INBOX
Насчет неудаления писем с клиентов, может быть дело все в синхронизации? (клиент Thunderbird):
Вложения
imap.png

_Гагарин
проходил мимо

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение _Гагарин » 2010-07-05 7:23:46

попробовал.
если удалить на серваке с клиента тоже удаляеца.... беспредел.

_FreeBSD
проходил мимо

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение _FreeBSD » 2010-07-05 7:38:51

но что самое интересное
после удаления письма с сервера и исчезновения этого письма при просмотре из клиента
письмо все-равно остается в вышеобозначенном файле
почему оно не показываеца из клиента

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение Alex Keda » 2010-07-05 7:51:18

оббегать, думаю, придётся всех.
вообще - лучше поискать утилиту по выковыриванию писем из почтового клиента, дождаться напарников, и оббежать всех.

сразу написать начальству заявку на
1. сервер под бэкапы
2. второй кондиционер
3. что-то типа Siemens MC35i - GSM модем и настроить Nagios - чтоб SMS слал о превышении температуре и работе серверов.
[offtop]
а чё за сервера/диски такие что не вырубились при перегреве а продолжали работать?
[/offtop]
Убей их всех! Бог потом рассортирует...


Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение Alex Keda » 2010-07-05 8:56:06

_FreeBSD писал(а):блин, IMAP оказываеца еще та засада...
хранение информации на сервере, подразумевает что бэкапы сервера настроены.
Убей их всех! Бог потом рассортирует...

_Сатана
проходил мимо

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение _Сатана » 2010-07-05 9:12:13

это все понятно, НО на клиенте письма остаются, они только по какой-то причине не отображаются.

Игры с заголовками ни к чему не приводят, т.к. у неотображающихся писем (те которых нет на серваке, но есть на клиенте) заголовок у всех такой:

Код: Выделить всё

X-Mozilla-Status: 0001 
т.е. они не удалены на клиенте. Они просто не отображаются

Аватара пользователя
konstantine
ефрейтор
Сообщения: 55
Зарегистрирован: 2009-03-14 11:51:17

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение konstantine » 2010-07-05 11:00:18

Alex Keda писал(а):оббегать, думаю, придётся всех.
вообще - лучше поискать утилиту по выковыриванию писем из почтового клиента, дождаться напарников, и оббежать всех.

сразу написать начальству заявку на
1. сервер под бэкапы
2. второй кондиционер
3. что-то типа Siemens MC35i - GSM модем и настроить Nagios - чтоб SMS слал о превышении температуре и работе серверов.
[offtop]
а чё за сервера/диски такие что не вырубились при перегреве а продолжали работать?
[/offtop]
Ну смотрю раз тема начала жить отпишусь. Сейчас ребята уже подошли.... бегают эникеят... Спасиб Лисс кандёр уже почини в серверной сново +18, наш завод из аз "кризиса" совсем плох и поэтому о втором кондишене речи быть не может идинственное последовал твоему совету заставил написать начальника бумагу на бэкап винты САТАшные.
По поводу рассылки смс по телефону у мя давно была идея такая но пока задачи другие очень давят на грудь и надо хотяб их успеть освоить.
А диски у нас Сказёвые в 5ом рейде а некоторые и 4ом заметил баг винда в 5ом рейде работала при вылетевших 2ух винтах винда работала до того момента когда произошло чтение с диска.
@lissyara: Решений "искаропки" под конкретную задачу - катастрофически мало.
Любое боле-мене серьёзное решение - это кручение коробки под себя.

Аватара пользователя
konstantine
ефрейтор
Сообщения: 55
Зарегистрирован: 2009-03-14 11:51:17

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение konstantine » 2010-07-05 11:30:02

Едиственная проблема сечас сделал сервер как open_relay для локальных тачек 192.168.0.0/16, т.к. стокнулся с такой бедой не получается при отправке авторизироваться например вот что пишет в /var/log/exim/mainlog при отсылании почты:

Код: Выделить всё

2010-07-05 15:18:38 lookup_cram authenticator failed for ([192.168.1.1]) [192.168.1.1]: 535 Incorrect authentication data (set_id=konstantine)
2010-07-05 15:18:38 login authenticator failed for ([192.168.1.1]) [192.168.1.1]: 535 Incorrect authentication data (set_id=konstantine)
exim/configure:

Код: Выделить всё

begin authenticators
# CRAM-MD5 аутентификация, требует наличия пароля в открытом виде, имя
# пользователя должно быть в формате user@domain, как оно хранится в таблице
# accounts
lookup_cram:
        driver = cram_md5
        public_name = CRAM-MD5
        server_set_id = $1
        server_secret = ${lookup pgsql {select password from accounts where login='$1'}{$value}fail}

# LOGIN аутентификация - не требует хранения пароля в открытом виде, однако, по
# сети пароль передается в открытом виде - требуется лишь выполнение условия
# server_condition - $1 - имя пользователя, а $2 - пароль. LOGIN безопасен
# только при установлении ssl соединения.
login:
        driver = plaintext
        public_name = LOGIN
        server_set_id = $1
        server_prompts = Username:: : Password::
        server_condition = ${lookup pgsql {select login from accounts where login='$1' and password='$2'}{yes}{no}}
Такое впечатление что запросы в БД не правильно уходят, т.к. в БД у меня пользователи в таблице accounts и в поле login хранятся вот так user@domain, а такое впечатление что в запроссе в индификатор $1 попадает только user хотя в переводе написано что не так..... Может подскажите ? А то боюсь те юзверевские тачки что на винде прочухают дырку и начнух спамить :(
Делал по http://www.lissyara.su/articles/freebsd ... asin/[code][/code]
@lissyara: Решений "искаропки" под конкретную задачу - катастрофически мало.
Любое боле-мене серьёзное решение - это кручение коробки под себя.

Аватара пользователя
konstantine
ефрейтор
Сообщения: 55
Зарегистрирован: 2009-03-14 11:51:17

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение konstantine » 2010-07-05 11:52:45

Покурив вот это по лучше http://www.lissyara.su/doc/exim/4.70/th ... enticator/ я всётаки дописал в ручную свой домен получилось так:

Код: Выделить всё

lookup_cram:
        driver = cram_md5
        public_name = CRAM-MD5
        server_secret = ${lookup pgsql {select password from accounts where login='$1@mydomain.ru'}{$value}fail}
        server_set_id = $1

# LOGIN аутентификация - не требует хранения пароля в открытом виде, однако, по
# сети пароль передается в открытом виде - требуется лишь выполнение условия
# server_condition - $1 - имя пользователя, а $2 - пароль. LOGIN безопасен
# только при установлении ssl соединения.
login:
        driver = plaintext
        public_name = LOGIN
        server_prompts = Username:: : Password::
        server_condition = ${lookup pgsql {select login from accounts where login='$1@mydomain.ru' and password='$2'}{yes}{no}}
        server_set_id = $1
А mydomain.ru как то в переменную можно загнать, а что если у мя exim за пару доменов отвечает ??? Просто хочеться так как правильно, а не как всегда
Последний раз редактировалось Laa 2010-07-07 17:11:50, всего редактировалось 1 раз.
Причина: Убедительная просьба юзать теги [code] при оформлении листингов.
@lissyara: Решений "искаропки" под конкретную задачу - катастрофически мало.
Любое боле-мене серьёзное решение - это кручение коробки под себя.

_Гагарин
проходил мимо

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение _Гагарин » 2010-07-05 13:12:34

у меня вот так, все работает:

Код: Выделить всё

begin authenticators

# Метод - PLAIN
# с обязательной шифрацией SSL/TLS (проверка $tls_cipher)
auth_plain:
  driver                     = plaintext
  public_name                = PLAIN
  server_advertise_condition = ${if eq{$tls_cipher}{}{false}{true}}
  server_condition           = ${lookup mysql{SELECT username FROM mailbox WHERE username='${quote_mysql:$auth2}' AND password='${quote_mysql:$auth3}' AND active='1'}{true}{false}}
  server_prompts             = :
  server_set_id              = $auth2

# Метод - LOGIN
# с обязательной шифрацией SSL/TLS (проверка $tls_cipher)
auth_login:
  driver                     = plaintext
  public_name                = LOGIN
  server_advertise_condition = ${if eq{$tls_cipher}{}{false}{true}}
  server_condition           = ${lookup mysql{SELECT username FROM mailbox WHERE username='${quote_mysql:$auth1}' AND password='${quote_mysql:$auth2}' AND active='1'}{true}{false}}
  server_prompts             = Username:: : Password::
  server_set_id              = $auth1

# Метод - CRAM-MD5
# с обязательной шифрацией SSL/TLS (проверка $tls_cipher)
auth_cram_md5:
  driver                     = cram_md5
  public_name                = CRAM-MD5
  server_advertise_condition = ${if eq{$tls_cipher}{}{false}{true}}
  server_secret              = ${lookup mysql{SELECT password FROM mailbox WHERE username='${quote_mysql:$auth1}' AND active='1'}{$value}fail}
  server_set_id              = $auth2

_9 мая
проходил мимо

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение _9 мая » 2010-07-05 13:17:46

konstantine писал(а):...А mydomain.ru как то в переменную можно загнать, а что если у мя exim за пару доменов отвечает ??? Просто хочеться так как правильно, а не как всегда
вопрос не совсем ясен, потому как видно что вроде ты с БД работаешь, значит все о доменах, ящиках у тебя в базе. Выбирай из базы и делай переменную, например у меня стандартные переменные с доменами заполняются так в самом начале:

Код: Выделить всё

domainlist relay_to_domains =
hostlist   relay_from_hosts = localhost : 127.0.0.0/8
domainlist local_domains    = ${sg{${lookup mysql{SELECT domain FROM domain WHERE transport='local' AND active='1'}}}{\n}{:}}
domainlist virtual_domains  = ${sg{${lookup mysql{SELECT domain FROM domain WHERE transport='virtual' AND active='1'}}}{\n}{:}}
в переменных local_domains, virtual_domains сидит список доменов вида:
домен1:домен2:домен3....

Аватара пользователя
konstantine
ефрейтор
Сообщения: 55
Зарегистрирован: 2009-03-14 11:51:17

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение konstantine » 2010-07-05 16:59:30

У меня видать сидит как то криво, уже и так и эдак перепробывал

Код: Выделить всё

domainlist local_domains = ${lookup pgsql{SELECT domain FROM local_domain}}
#domainlist local_domains = manotom-tmz.ru

....

lookup_cram:
        driver = cram_md5
        public_name = CRAM-MD5
#        server_secret = ${lookup pgsql {select password from accounts where login='$1@manotom-tmz.ru'}{$value}fail}
        server_secret = ${lookup pgsql {select password from accounts where login='$1'@$local_domains}{$value}fail}
        server_set_id = $1

# LOGIN аутентификация - не требует хранения пароля в открытом виде, однако, по
# сети пароль передается в открытом виде - требуется лишь выполнение условия
# server_condition - $1 - имя пользователя, а $2 - пароль. LOGIN безопасен
# только при установлении ssl соединения.
login:
        driver = plaintext
        public_name = LOGIN
        server_prompts = Username:: : Password::
#        server_condition = ${lookup pgsql {select login from accounts where login='$1@manotom-tmz.ru' and password='$2'}{yes}{no}}
        server_condition = ${lookup pgsql {select login from accounts where login='$1'@$local_domains and password='$2'}{yes}{no}}
        server_set_id = $1


main etc# tail -f /var/log/exim/mainlog

Код: Выделить всё

2010-07-05 20:57:15 no host name found for IP address 192.168.222.1
2010-07-05 20:57:19 lookup_cram authenticator failed for ([192.168.222.1]) [192.168.222.1]: 435 Unable to authenticate at present (set_id=konstantine): unknown variable name "local_domains"
2010-07-05 20:57:19 login authenticator failed for ([192.168.222.1]) [192.168.222.1]: 435 Unable to authenticate at present (set_id=konstantine): unknown variable name "local_domains"
2010-07-05 20:57:21 lookup_cram authenticator failed for ([192.168.222.1]) [192.168.222.1]: 435 Unable to authenticate at present (set_id=konstantine): unknown variable name "local_domains"
2010-07-05 20:57:22 login authenticator failed for ([192.168.222.1]) [192.168.222.1]: 435 Unable to authenticate at present (set_id=konstantine): unknown variable name "local_domains"
^C
Если в ручную у экзима спрашивать, то

Код: Выделить всё

bdusers=# select domain from local_domain;
     domain
----------------
 manotom-tmz.ru
(1 запись)
@lissyara: Решений "искаропки" под конкретную задачу - катастрофически мало.
Любое боле-мене серьёзное решение - это кручение коробки под себя.

Аватара пользователя
konstantine
ефрейтор
Сообщения: 55
Зарегистрирован: 2009-03-14 11:51:17

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение konstantine » 2010-07-06 21:15:52

Куда копать скажите ?
@lissyara: Решений "искаропки" под конкретную задачу - катастрофически мало.
Любое боле-мене серьёзное решение - это кручение коробки под себя.

Dark_ASU
сержант
Сообщения: 258
Зарегистрирован: 2009-10-31 22:13:04
Контактная информация:

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение Dark_ASU » 2010-07-06 22:04:23

У меня Login хранится в виде name@domail.ru и никаках проблем.

Аватара пользователя
konstantine
ефрейтор
Сообщения: 55
Зарегистрирован: 2009-03-14 11:51:17

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение konstantine » 2010-07-07 6:24:53

_Попов писал(а):
konstantine писал(а):... т.к. имап является протоколом ПРОССМОТРА дирректорий на почтовом сервере, он локально только заголовки писем хранит...
почему у меня тогда письма сохраняются после просмотра в файле (клиент Thunderbird):

Код: Выделить всё

...\profile\ImapMail\НазваниеДомена\INBOX
Насчет неудаления писем с клиентов, может быть дело все в синхронизации? (клиент Thunderbird):
Вдумчиво прочитав твой пост я нарыл в инете следующие ссылки
http://www.melnikov.ca/mel/docs/imap_vs_pop_brief.html - IMAP vs POP
http://www.sergeysl.ru/freebsd-courier- ... d-folders/ - FreeBSD: Использование общих папок на сервере Courier-IMAP

Сейчас сделал так же как у тебя - объяснил напарникам что крутить в почтовом клиенте чтобы письма хранились локально и не грузили TCP сессией IMAP сервер, а вот вторая ссылка очень познавательна для оптимизации труда на предприятии (организации всяких news лент, общих папок) будем разбираться.

Кстати при организации такого хранения писем по протоколлу IMAP, то сервер канешно нагружется в разы меньше, НО при пропадании писем на сервере - когда вы запустите у себя клиент и он(клиент) обнаружит, что тех писем которые есть у него НЕТ на сервере он удалит эти письма(прям как rsync с дефаултовыми настройками), но в моём же случае я бы в ручную перед созданием учётной записи у клиента перекачивал его почту с локальной тачки на новый сервер....

Всё приходит с годами....
@lissyara: Решений "искаропки" под конкретную задачу - катастрофически мало.
Любое боле-мене серьёзное решение - это кручение коробки под себя.

_Гагарин
проходил мимо

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение _Гагарин » 2010-07-07 6:52:22

konstantine писал(а):...НО при пропадании писем на сервере - когда вы запустите у себя клиент и он(клиент) обнаружит, что тех писем которые есть у него НЕТ на сервере он удалит эти письма...
да, не удаляет же он письма (клиент я имею ввиду). Проведи чистый эксперимент удали с сервака письмо, которое клиент уже просмотрел и после перезагрузки клиента он это письмо отображать не будет, но в вышеобозначенном файле это письмо останется, т.е. письма остаются, они не отображаются просто. Как включить отображение в таком случае я не знаю.

PluOk
проходил мимо
Сообщения: 7
Зарегистрирован: 2008-12-08 19:09:12

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение PluOk » 2010-07-07 12:50:27

Если хочешь сохранить старую почту которая в IMAP откопируй из профиля файлы INBOX и т.д. в Mail\Local Folders в Thunderbird
--
обходить всех придется если нет удаленного доступа к компам

_FreeBSD
проходил мимо

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение _FreeBSD » 2010-07-07 13:35:54

PluOk писал(а):Если хочешь сохранить старую почту которая в IMAP откопируй из профиля файлы INBOX и т.д. в Mail\Local Folders в Thunderbird...
реальна работает
все мои письма экспериментаторские появились, и не только экспериментаторские.....
балин, ты очень крутой тип PluOk, выпей водки
спасибо

Аватара пользователя
konstantine
ефрейтор
Сообщения: 55
Зарегистрирован: 2009-03-14 11:51:17

Re: Друзья!!! Выручите брата по оружию..

Непрочитанное сообщение konstantine » 2010-07-08 12:00:49

Dark_ASU писал(а):У меня Login хранится в виде name@domail.ru и никаках проблем.
да пофиг буду дописывать в ручную просто фишка в том что почему то запросс который в ручную отдаёт мой домен в конфиге exim`а не отдаёт, в чём беда не знаю.
@lissyara: Решений "искаропки" под конкретную задачу - катастрофически мало.
Любое боле-мене серьёзное решение - это кручение коробки под себя.