Опытный
Профиль
Группа: Участник
Сообщений: 734
Регистрация: 11.11.2003
Репутация: 1 Всего: -1
|
Всем добрый день. Пытаюсь настроить прием/отправку почты на сервере. Реализую через указанную в сабже связку. Файл /etc/exim4/exim4.conf выглядит так: Код | # Имя хоста. Используется в EHLO. # Фигурирует в других пунктах, если они не заданы # По умолчанию используется то, что вернёт функция uname() primary_hostname = boo.life
# Данные для подключения к базе данных # hide в начале означает, то нерутовые пользователи командой exim -bV не увидят # этих значений hide mysql_servers = localhost/mail/postmaster/MyPass
# Задаём список локальных доменов. В данном случае спрашиваем у MySQL
DOMAIN_QUERY = SELECT domain FROM domain WHERE \ domain='${domain}' AND active='1' domainlist local_domains = ${lookup mysql{DOMAIN_QUERY}}
# Таким же образом задаём список доменов, с которых разрешён релей. domainlist relay_to_domains = ${lookup mysql{DOMAIN_QUERY}}
# Список хостов, с которых разрешён релей без авторизации. hostlist relay_from_hosts = localhost:127.0.0.1/8:192.168.0.0/24
# Списки ACL для проверки почты acl_smtp_rcpt = acl_check_rcpt acl_smtp_data = acl_check_data
# Здесь указываем сокет внешнего антивируса ClamAV. Пока что оставим закомменченным # Включим его позже # av_scanner = clamd:/var/run/clamav/clamd.ctl # Здесь укажем TCP/IP сокет для SpamAssassin # spamd_address = 127.0.0.1 783
# Порт, на котором SMTP демон будет слушать входящие подключения daemon_smtp_ports = 25 : 465
# Имя домена добавляемое для локальных отправителей (реальных # юзеров системы) т.е. почта отправляемая от root, будет от # root@домен_указанный_здесь. Если пункт незадан, то используется # имя хоста из primary_hostname. qualify_domain = boo.life
# Имя домена добавляемое для локальных получателей qualify_recipient = boo.life
# запрещаем работу доставки под юзером root - в целях безопасности never_users = root
# Проверяем соответствие прямой и обратной зон для всех хостов. # При необходимости лучше раскомментировать это позже #host_lookup = *
# Здесь можно включить запросы ident на входящие SMTP запросы. # Вещь ненужная и неактуальная. Отключаем #rfc1413_hosts = * rfc1413_query_timeout = 0s
# Период повторных попыток доставки сообщений об ошибке ignore_bounce_errors_after = 1d
# Через пару недель удалим то, что так и не смогли доставить timeout_frozen_after = 14d
# Выбираем, что мы будем логировать # + - писать в логи, # - - Не писать в логи. # +all_parents - все входящие? # +connection_reject - разорваные соединения # +incoming_interface - интерфейс (реально - IP) # +lost_incoming_connections - потеряные входящие # соединения # +received_sender - отправитель # +received_recipients - получатель # +smtp_confirmation - подтверждения SMTP? # +smtp_syntax_error - ошибки синтаксиса SMTP # +smtp_protocol_error - ошибки протокола SMTP # -queue_run - работа очереди (замороженные мессаги) log_selector = \ +all_parents \ +connection_reject \ +incoming_interface \ +lost_incoming_connection \ +received_sender \ +received_recipients \ +smtp_confirmation \ +smtp_syntax_error \ +smtp_protocol_error \ -queue_run
begin acl
# Правила для всех получателей. Выше мы включили этот ACL
acl_check_rcpt:
# Сразу принять то, что пришло с локалхоста не по TCP/IP accept hosts = :
# Запрещаем письма для локальных доменов, содержащие в локальной части # символы @; %; !; /; |. deny message = Restricted characters in address domains = +local_domains local_parts = ^[.] : ^.*[@%!/|]
# Проверяем недопустимые символы для # нелокальных получателей: deny message = Restricted characters in address domains = !+local_domains local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
# Принимать почту на постмастера, не проверяя отправителя. # Может использоваться для спама accept local_parts = postmaster domains = +local_domains
# Здесь можно запретить отправку от непроверенных пользователей # Если нужно отправлять почту от logwatch etc., то лучше убрать
require verify = sender
accept hosts = +relay_from_hosts control = submission require message = relay not permitted domains = +local_domains : +relay_to_domains require verify = recipient
# Все, что сюда дошло, пропускаем accept
# Здесь мы проверяем тело сообщения
acl_check_data: # Здесь проверка на вирусы warn malware = * message = This message contains a virus ($malware_name).
# А здесь - проверка на спам warn spam = nobody add_header = X-Spam-Flag: YES\n\ X-Spam_score: $spam_score\n\ X-Spam_score_int: $spam_score_int\n\ X-Spam_bar: $spam_bar\n\ X-Spam_report: $spam_report
# Остальное пропускаем accept
begin routers
# Поиск маршрута к хосту в DNS. Если маршрут не найден в DNS - # то это `унроутабле аддресс`. Не проверяются локальные # домены, 0.0.0.0 и 127.0.0.0/8 dnslookup: driver = dnslookup domains = ! +local_domains transport = remote_smtp ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 no_more
# смотрим альясы
system_aliases: driver = redirect allow_fail allow_defer data = ${lookup mysql{SELECT goto FROM alias WHERE \ address='${quote_mysql:$local_part@$domain}' OR \ address='${quote_mysql:@$domain}'}}
# Всё что осталось - это локальные адресаты. # Доставляем почту в dovecot dovecot_user: driver = accept condition = ${lookup mysql{SELECT goto FROM \ alias WHERE \ address='${quote_mysql:$local_part@$domain}' OR \ address='${quote_mysql:@$domain}'}{yes}{no}} transport = dovecot_delivery
begin transports
# На удалённые хосты доставляем по SMTP
remote_smtp: driver = smtp
# Доставка локальным адресатам - в dovecot # Надо заметить что тут использовалась ранее прямая доставка # в директорию, но щас с портами стал-таки устанавливаться deliver # программа dovecot занимающаяся доставкой мессаг. # Соответственно юзаем его. dovecot_delivery: driver = pipe command = /usr/lib/dovecot/deliver -d $local_part@$domain message_prefix = message_suffix = delivery_date_add envelope_to_add return_path_add log_output user = vmail
# Доставка через пайп
address_pipe: driver = pipe return_output
# Транспорт для автоответов
address_reply: driver = autoreply
begin retry
# Правила для повторных попыток доставки # Сначала попытки раз 15 мин в течение 2 часов, потом, начиная с # интервала в 1 час, увеличивая его в 1.5 раза, пытаемся доставить 16 часов. # Потом раз в 6 часов, до истечения 4 суток
# Address or Domain Error Retries # ----------------- ----- -------
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
# Преобразование адресов нам не нужно
begin rewrite
begin authenticators
# Здесь разные механизмы авторизации для разных клиентов auth_plain: driver = plaintext public_name = PLAIN server_prompts = Username:: : Password:: server_condition = ${if crypteq{$auth3}{${lookup mysql{SELECT password FROM \ mailbox WHERE username = '${quote_mysql:$auth2}'}}}{yes}{no}} server_set_id = $auth2
auth_login: driver = plaintext public_name = LOGIN server_condition = ${if crypteq{$auth2}{${lookup mysql{SELECT password FROM \ mailbox WHERE username = '${quote_mysql:$auth1}'}}}{yes}{no}} server_prompts = Username:: : Password:: server_set_id = $auth1
# А вот так мы можем передать аутентификацию на Dovecot SASL. # Впрочем, CRAM-MD5 все равно не прокатит auth_cram_md5: driver = dovecot public_name = CRAM-MD5 server_socket = /var/run/dovecot/auth-client server_set_id = $auth2
|
записи про домены в PostfixAdmin: Код |
INSERT INTO `domain` (`domain`, `description`, `aliases`, `mailboxes`, `maxquota`, `quota`, `transport`, `backupmx`, `created`, `modified`, `active`) VALUES ('ALL', '', 0, 0, 0, 0, '', 0, '2016-02-28 20:55:55', '2016-02-28 20:55:55', 1), ('boo.life', '', 0, 0, 10, 0, 'virtual', 0, '2016-02-28 22:06:41', '2016-02-28 22:06:41', 1);
|
для проверки роутинга выполняю: exim -bt [email protected] и получаю ошибку: [email protected] is undeliverable: Unrouteable address если удаляю /etc/exim4/exim4.conf, то с настройками /var/lib/exim4/config.autogenerated роутинг проходит и даже письма отправляются (командой mail), однако при попытке отправить в ответ - не доходят. З.Ы. домен boo.life - приведен для примера Подскажите, в чем именно может быть ошибка и как правильно настроить EXIM4 на прием почты? Заранее спасибо!
|