Локальный почтовый сервер

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-03 15:00:15

В конфигурации EXIM строка tls_advertise_hosts у меня закомментирована
Получается необходимо установить сертификат? Раньше такого не делал и всё работало...

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-04 11:29:53

Не могу разобраться, почему EXIM спрашивает про сертификат, ведь в файле конфигурации все упоминания про TLS закомментированы. Может вообще пересобрать EXIM без опции TLS?
Может это из за версии EXIM 4.87. На другом сервере использую 4.86, там EXIM вообще не спрашивает про сертификат...

Отправлено спустя 2 часа 31 минуту 31 секунду:
Сгенерировал ключи...
Теперь ЛОГ EXIM при отправке выглядит так:

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

2016-10-04 11:36:40 Warning: purging the environment.
 Suggested action: use keep_environment.
2016-10-04 11:36:40 1bqy7e-0000Fs-37 removed by root
2016-10-04 11:36:40 1bqy7e-0000Fs-37 Completed
2016-10-04 11:37:24 1brKHz-0000Od-SW <= ***@mail.ru H=(COMP) [192.168.10.1] I=[192.168.10.4]:25 P=esmtp S=360 

id=57F36729.7050501@domen.local from <reken@domen.local> for ***@yandex.ru
2016-10-04 11:37:24 1brKHz-0000Od-SW == ***@yandex.ru <***@yandex.ru> R=dovecot_user defer (-1): condition check 

lookup defer
2016-10-04 11:37:24 1brKHz-0000Od-SW ** ***@yandex.ru: retry timeout exceeded
2016-10-04 11:37:24 1brKI0-0000Og-6U <= <> R=1brKHz-0000Od-SW U=mailnull P=local S=1372 from <> for ***@mail.ru
2016-10-04 11:37:24 1brKHz-0000Od-SW Completed
2016-10-04 11:37:24 1brKI0-0000Og-6U == ***@mail.ru R=dovecot_user defer (-1): condition check lookup defer

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Локальный почтовый сервер

Непрочитанное сообщение xM » 2016-10-04 13:11:20

Reken писал(а): В конфигурации EXIM строка tls_advertise_hosts у меня закомментирована
Это означает что используется её значение по умолчанию, а оно соответствует

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

tls_advertise_hosts = *
Т.е. вы заявляете, что поддерживаете TLS но не имеете при этом сертификатов.
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-04 14:02:54

xM писал(а):Т.е. вы заявляете, что поддерживаете TLS но не имеете при этом сертификатов.
Уже есть сертификат, пытаюсь разобраться теперь дальше, почему всё таки exim не отрабатывает должным образом...

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-05 10:32:40

Замкнутый круг какой то... Не могу понять почему почта не уходит и не приходит...
EXIM по прежнему загоняет отправленное письмо в очередь и всё:

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

2016-10-05 09:13:59 Warning: purging the environment.
 Suggested action: use keep_environment.
2016-10-05 09:13:59 exim 4.87 daemon started: pid=962, -q30m, listening for SMTP on port 25 (IPv4) and for SMTPS on port 9025 (IPv4)
2016-10-05 09:14:01 1brKI0-0000Og-6U == ***@mail.ru R=dovecot_user defer (-1): condition check lookup defer
2016-10-05 09:43:59 1brKI0-0000Og-6U == ***@mail.ru routing defer (-51): retry time not reached
2016-10-05 10:13:59 1brKI0-0000Og-6U == ***@mail.ru routing defer (-51): retry time not reached
И ещё ругается что 25 порт занят

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

2016-10-04 15:13:31 socket bind() to port 25 for address (any IPv4) failed: Address already in use: waiting 30s before trying again (1 more try)
2016-10-04 15:14:01 socket bind() to port 25 for address (any IPv4) failed: Address already in use: daemon abandoned
Не могу понять в каком направлении "чинить" этот сервак... Думаю файрвол тут не причем, fetchmail забирает же почту...Думаю если бы файрвол блокировал бы, то и fetchmail ничего бы не забрал по 110 порту POP3...

В общем тупик :st:

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-07 10:06:22

Всё ещё пробую запустить почтовый сервак...
Подскажите мне пожалуйста, я правильно понимаю "схему" сервака? В следующей связке Fetchmail+Dovecot+Exim+Postfixadmin

1) Fetchmail забирает почту с ящика mail.ru по протоколу POP3
2) Далее Fetchmail отдает полученное письмо в Dovecot
3) Dovecot раскладывает письмо по всем локальным ящикам пользователей
4) EXIM забирает почту из ящиков пользователей и отправляет по клиентам
5) Так же EXIM отправляет почту от клиентов, при этом выполняет подмену адреса, например с user@domen.local на ***@mail.ru

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

Я правильно понимаю эту схему? Подскажите пожалуйста...

Отправлено спустя 42 минуты 42 секунды:
Хотя нет... что то я напутал... Вот как получается правильно:
1) Fetchmail забирает почту с ящика mail.ru по протоколу POP3
2) Далее Fetchmail отдает полученное письмо EXIMу
3) Exim раскидывает почту по ящикам Dovecot.
4) Клиенты в свою очередь, забирают почту из ящиков Dovecot
5) Так же EXIM отправляет почту от клиентов, при этом выполняет подмену адреса, например с user@domen.local на ***@mail.ru

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

Вроде бы теперь правильно понял?

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Локальный почтовый сервер

Непрочитанное сообщение xM » 2016-10-07 14:27:17

по п.3 раскладывать может и Exim, и Dovecot (через Exim) - от настройки зависит.
Ловите кто у вас 25 порт использует. Странно, что в

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

sockstat | grep :25
у вас ничего нет.
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-07 15:37:50

около 10 раз пересмотрел конфиг EXIM, и наконец токи обнаружил ошибку... А была она вот где:
В begin routers где EXIM доставляет почту в Dovecot , я пропустил значек $
Вот так: '${quote_mysql:@$domain}'}

Теперь почта уходит...
А вот с получением почты проблема. Вот что в логах EXIM вижу:

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

2016-10-07 15:39:19 1bsTUl-0000Vy-Jz <new@domen.local>: dovecot_delivery transport output: Can't open log file /var/log/dovecot.log: Permission denied
2016-10-07 15:39:19 1bsTUl-0000Vy-Jz == new@domen.local (new@domen.local) <mail@domen.local> R=dovecot_user T=dovecot_delivery defer (0): Child process of dovecot_delivery transport returned 75 (could mean temporary error) from command: /usr/local/libexec/dovecot/deliver
На права что ли ругается? Или что ему не нравится? Подскажите пожалуйста

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Локальный почтовый сервер

Непрочитанное сообщение xM » 2016-10-07 18:07:50

Значит у вас раскладывает почту Dovecot и он не может это сделать.
Скорее всего, папки нет куда складывать.
IT voodoo blog https://kostikov.co

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-10 8:56:14

xM писал(а):Значит у вас раскладывает почту Dovecot и он не может это сделать.
Скорее всего, папки нет куда складывать.
Да, раскладывает Dovecot. В конфиге Dovecot я указал путь куда закидывать почту:

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

mail_location = maildir:/var/mail/exim/%d/%n
Когда я добавляю в postfixadmin нового клиента, то в папке /var/mail/mail/exim/domen.local/ появляется новая папка с названием нового клиента...

После того как я добавил права +S на файл /usr/local/libexec/dovecot/deliver в логах при получении почты вижу следующее:

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

2016-10-07 16:49:42 1bsUas-0000Ya-56 <new@domen.local>: dovecot_delivery transport output: 

/usr/local/libexec/dovecot/deliver must not be both world-executable and setuid-root. This allows root exploits. See 

http://wiki.dovecot.org/LDA#multipleuids
2016-10-07 16:49:42 1bsUas-0000Ya-56 == new@domen.local (new@domen.local) <mail@domen.local> R=dovecot_user 

T=dovecot_delivery defer (0): Child process of dovecot_delivery transport returned 75 (could mean temporary error) 

from command: /usr/local/libexec/dovecot/deliver
Сейчас буду пробовать разобраться с ошибкой... Что то сможете подсказать мне?

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Локальный почтовый сервер

Непрочитанное сообщение alex3 » 2016-10-10 10:25:52

Вы дали права рута. На это довекот и ругается. Обычно все почтовые программы работают под другим пользователем, например mailnull, и права на директории и файлы раздаются исходя из этого.
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-10 10:40:42

alex3 писал(а):Вы дали права рута. На это довекот и ругается. Обычно все почтовые программы работают под другим пользователем, например mailnull, и права на директории и файлы раздаются исходя из этого.
Вы имеете ввиду, то что я добавил +S ? И из-за этого ругается?

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Локальный почтовый сервер

Непрочитанное сообщение alex3 » 2016-10-10 10:55:30

Reken писал(а):

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

usr/local/libexec/dovecot/deliver must not be both world-executable and setuid-root. This allows root exploits. See 

http://wiki.dovecot.org/LDA#multipleuids
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-10 11:11:42

Отобрал права s
Теперь при получении почты, вернулся к прошлой ошибке. Привожу лог:

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

2016-10-10 11:20:14 1btUsg-0000MG-67 <= ***@yandex.ru H=(free.domen.local) [127.0.0.1] I=[127.0.0.1]:25 P=esmtp S=2114 id=8281451476086613@web4o.yandex.ru from <***@yandex.ru> for mail@domen.local
2016-10-10 11:20:14 1btUsg-0000MG-67 <reken@domen.local>: dovecot_delivery transport output: Can't open log file /var/log/dovecot.log: Permission denied
2016-10-10 11:20:14 1btUsg-0000MG-67 == reken@domen.local (reken@domen.local) <mail@domen.local> R=dovecot_user T=dovecot_delivery defer (0): Child process of dovecot_delivery transport returned 75 (could mean temporary error) from command: /usr/local/libexec/dovecot/deliver
2016-10-10 11:20:14 1btUsg-0000MG-67 <new@domen.local>: dovecot_delivery transport output: Can't open log file /var/log/dovecot.log: Permission denied
2016-10-10 11:20:14 1btUsg-0000MG-67 == new@domen.local (new@domen.local) <mail@domen.local> R=dovecot_user T=dovecot_delivery defer (0): Child process of dovecot_delivery transport returned 75 (could mean temporary error) from command: /usr/local/libexec/dovecot/deliver
Похоже ругается, что не может записать ошибку в лог Dovecot а так же ругается на deliver...
Сможете что то подсказать?

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Локальный почтовый сервер

Непрочитанное сообщение alex3 » 2016-10-10 11:28:17

от какого пользователя запускается довекот? он не может записать лог
Reken писал(а):

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

 dovecot_delivery transport output: Can't open log file /var/log/dovecot.log: Permission denied
и из-за этого деливер дает ошибку

Отправлено спустя 8 минут 18 секунд:
у Вас какой довекот, первый или второй? неплохо было бы конфиг посмотреть.
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-10 11:33:33

alex3 писал(а):от какого пользователя запускается довекот? он не может записать лог
Reken писал(а):

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

 dovecot_delivery transport output: Can't open log file /var/log/dovecot.log: Permission denied
и из-за этого деливер дает ошибку

Отправлено спустя 8 минут 18 секунд:
у Вас какой довекот, первый или второй? неплохо было бы конфиг посмотреть.
Использую dovecot (первый)
В довекоте такая строка:

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

login_user = dovecot
Вывод ls -l /var/log/dovecot.log показывает:

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

-rw-------  1 root  wheel  56736 Oct 10 08:55 /var/log/dovecot.log
Заменить root на dovecot ?

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Локальный почтовый сервер

Непрочитанное сообщение alex3 » 2016-10-10 11:40:51

в конфиге довекота есть такие строки?

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

log_path=
info_log_path=
syslog_facility=
что там написано?
ничего менять не надо. довекот должен через сислог писать.
и конфиг /etc/syslog.conf , если можно...
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-10 11:59:27

Строки есть
Выглядят так:

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

#log_path=
info_log_path= /var/log/dovecot.log
#syslog_facility= mail
Содержание syslog.conf

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

# $FreeBSD: releng/9.3/etc/syslog.conf 238473 2012-07-15 10:55:43Z brueffer $
#
#       Spaces ARE valid field separators in this file. However,
#       other *nix-like systems still insist on using tabs as field
#       separators. If you are sharing this file between systems, you
#       may want to use only tabs as field separators here.
#       Consult the syslog.conf(5) manpage.
*.err;kern.warning;auth.notice;mail.crit                /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err   /var/log/message
s
security.*                                      /var/log/security
auth.info;authpriv.info                         /var/log/auth.log
mail.info                                       /var/log/maillog
lpr.info                                        /var/log/lpd-errs
ftp.info                                        /var/log/xferlog
cron.*                                          /var/log/cron
*.=debug                                        /var/log/debug.log
*.emerg                                         *
# uncomment this to log all writes to /dev/console to /var/log/console.log
# touch /var/log/console.log and chmod it to mode 600 before it will work
#console.info                                   /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
# touch /var/log/all.log and chmod it to mode 600 before it will work
#*.*                                            /var/log/all.log
# uncomment this to enable logging to a remote loghost named loghost
#*.*                                            @loghost
# uncomment these if you're running inn
# news.crit                                     /var/log/news/news.crit
# news.err                                      /var/log/news/news.err
# news.notice                                   /var/log/news/news.notice
!ppp
*.*                                             /var/log/ppp.log
!*

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Локальный почтовый сервер

Непрочитанное сообщение alex3 » 2016-10-10 12:41:04

и newsyslog.conf для кучи
интересует строка с /var/log/dovecot.conf
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-10 14:19:48

alex3 писал(а):и newsyslog.conf для кучи
интересует строка с /var/log/dovecot.conf
Там нет такой строки...

Отправлено спустя 1 час 31 минуту 38 секунд:
Посмотрел сейчас другой почтовый сервак, там на каталог /var/log/dovecot.log даны права 777 (rwxrwxrwx). С такими правами конечно всё работает...
Но наверное это неправильно?

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Локальный почтовый сервер

Непрочитанное сообщение alex3 » 2016-10-10 15:07:56

добавь в newsyslog.conf строчку вида

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

/var/log/dovecot.log   mailnull:mail   640  7     *    @T00  JC
потом сделай

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

chown mailnull:mail /var/log/dovecot.log
и перезапусти newsyslog
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Локальный почтовый сервер

Непрочитанное сообщение xM » 2016-10-10 15:11:20

Dovecot, Exim и сопутствующие процессы запускайте от одного пользователя. У меня это mailnull.
Это снимет вопрос с правами.
IT voodoo blog https://kostikov.co

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Локальный почтовый сервер

Непрочитанное сообщение alex3 » 2016-10-10 15:19:10

ой, да...проглядел, что довекот от другого юзера работает...

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

login_user =  mailnull
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-10-10 15:37:36

Ну вот и всё... Забегала почта и на отправку и на получение.
Всем спасибо кто помогал мне.

По поводу login_user = mailnull я уже понял. А EXIM у меня от mailnull изначально работает. Так что теперь и EXIM и DOVECOT от mailnull...

Лучше ещё несколько раз просмотрю конфиги EXIM и DOVECOT, что бы уже точно разобраться, что там к чему...

Аватара пользователя
Reken
лейтенант
Сообщения: 614
Зарегистрирован: 2014-06-30 11:23:24
Откуда: Республика Карелия

Локальный почтовый сервер

Непрочитанное сообщение Reken » 2016-11-08 14:19:16

Немного поломался у меня тестовый почтовый сервер...
Поломался после следующего:
Я обновил mysq56l-server и mysql56-client до последней версии 5.6.33 . Так же обновил postfixadmin до последней версии 3.0
Обновлял при помощи portupgrade -R
После обновления все внесенные данные в файл /usr/local/www/postfixadmin/config.inc.php были сброшены на умолчание...
Я переписал всё как и было, в том числе и строку: $CONF['setup_password'] = ‘много букв и цифр';

После всего этого, при попытке получить почту на клиенте, получаю ошибку:

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

Не удалось отправить пароль для пользователя reken@domen.local Почтовый сервер "192.168.10.4" ответил Internal login failure. Refer to server log for more information
В логе dovecot следующее:

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

Nov 08 12:46:56 pop3-login: Info: Internal login failure (auth failed, 1 attempts): user=<reken@domen.local>, method=PLAIN, rip=192.168.10.1, lip=192.168.10.4
Сможете пожалуйста подсказать, как исправить ошибку? Я так понимаю dovecot на логин и пароль ругается?