Exim не доставляет почту в Dovecot, когда она приходит с внешнего ретранслятора (Unrouteable address)

474
Adambean

У меня есть виртуальный сервер, на котором работает Debian Stretch, и я намерен стать почтовым обменом (и, возможно, веб-сервером) только для нескольких личных доменных имен. (В настоящее время 1, хотя еще 2 в ближайшее время.) Я использую Exim в качестве почтового обмена и Dovecot для виртуальных пользователей для доступа к почтовым ящикам.

Я использую пакет exim4-daemon-heavy с комбинированным форматом конфигурации, который хранится в /etc/exim4/exim4.conf.template. Я также использовал это руководство в качестве основы для настройки маршрутизации exim для виртуальных пользователей Dovecot, с некоторыми адаптациями для того, что я хочу (мультидоменный) и для того, чтобы оно работало на Debian Stretch.

Мои намерения в отношении каждого доменного имени, для которого я хочу разместить почту / Интернет:

  • Иметь единого системного пользователя.
  • Каждый домен хранит все (почту и сеть) на /home/.
  • Почта в /home//mail.
  • Веб на /home//public_html.
  • Каждый почтовый ящик в домене на /home//mail/.
  • Каждый почтовый ящик использует формат MAILDIR, а не MBOX.
  • Нет записей о системных пользователях для каждого виртуального почтового ящика, Dovecot будет отвечать за ведение списка виртуальных пользователей.

Вы, наверное, заметили, что это немного похоже на то, как cPanel / WHM работает, так почему бы мне просто не использовать это? Слишком дорого для того, что является только персональным VPS, размещенным в качестве виртуального сервера у меня дома. (Кроме того, мне очень нравится дистрибутив Debian, а не RHEL, который не поддерживает cPanel / WHM.)

Поначалу и Exim, и Dovecot отлично справлялись со своей работой. Я могу отправлять / получать (большинство) электронных писем без каких-либо проблем. Я также поставил Roundcube для доступа к веб-почте, никаких проблем там нет.

Однако когда exim получает почту от внешних ретрансляторов для определенных адресов электронной почты, он отказывается от почты с «Unrouteable address». Это может быть просто конфликт конфигурации.

Сценарий таков:

  • Полное доменное имя VPS соответствует первому имени виртуального домена, для которого в данный момент размещается почта / Интернет. (Давайте назовем это «example.com».)
  • Почтовый ящик, который полностью работает (и я замечаю больше всего), - это мой собственный почтовый ящик "adam@example.com".
  • У меня есть системный пользователь "Адам", который я использую для управления через SSH. (Это имеет разрешение sudo.)
  • Существует почтовый ящик для системных предупреждений «server@example.com», для которого я предназначался для получения писем от CRON, CSF + LFD, Webmin и т. Д. (Псевдоним «root» сопоставлен с этим адресом электронной почты.)

Что работает без проблем:

  • IMAP / SMTP доступ к "adam@example.com".
  • IMAP / SMTP доступ к "server@example.com".
  • Почта из виртуального почтового ящика "adam@example.com" на "server@example.com".
  • Почта из виртуального почтового ящика «server@example.com» на «adam@example.com».
  • Отправьте письмо с псевдонимом, например «root@example.com» или «webmin@example.com», на «server@example.com».
  • Письмо с "where-else@example.org "на" adam@example.com ".
  • Почта, пересылаемая с почтового ящика, размещенного интернет-провайдером, «adam@my-isp.example.org» на «adam@example.com».

Вещи, которые не работают:

  • Письмо с «where-else@example.org »на« server@example.com »отклоняется с« Unrouteable address ».
  • Почта, пересылаемая с почтового ящика, размещенного у интернет-провайдера «server@my-isp.example.org» на «server@example.com», отклоняется с «Unrouteable address».

Пример строки из журнала отклонений exim:

H=some-relay.my-isp.example.org [a.b.c.d] X=TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128 CV=no F=<anywhere-else@example.org> rejected RCPT <server@example.com>: Unrouteable address 

Я полагаю, что проблема может быть в том, что exim не знает, куда отправлять почту с внешнего ретранслятора, или Dovecot не верит, что почтовый ящик "server@example.com" существует. Я считаю, что последнему труднее поверить, поскольку почта от «adam@example.com» прекрасно с этим справляется, и это также использовало бы список виртуальных пользователей Dovecot.

Вот конфигурация маршрутизатора Exim для Dovecot:

##################################################### ### router/299_exim4-config_dovecot_router #####################################################  ### router/299_exim4-config_dovecot_router #################################  # This router delivers mail to any dovecot virtual # user who has a directory under /home/$domain/mail # Place after remote router and before localuser router # + addressing support requires uncommenting dovecot_router: driver = accept #local_part_suffix = +* #local_part_suffix_optional require_files = +/home/$domain/mail/$local_part/ transport = dovecot_transport  ##################################################### ### end router/299_exim4-config_dovecot_router ##################################################### 

Поскольку я думал, что возможен конфликт с router/300_exim4-config_real_localсидением с 300-м приоритетом, я перешел 299_exim4-config_dovecot_routerс его оригинального 320 приоритета на 299, но это не имело никакого значения. (Я подумал, что, возможно, это заставит exim попытаться отправить письмо Dovecot, прежде чем пытаться передать его в почтовый ящик пользователя системы.)

Вот транспортная конфигурация для Dovecot:

##################################################### ### transport/40_exim4-config_dovecot_transport #####################################################  # Transport to send any mail for virtual dovecot users to correct maildir box dovecot_transport: debug_print = "T: dovecot_virtual appendfile for $local_part@$domain" driver = appendfile create_directory directory_mode = 0750 directory = /home/$domain/mail/$local_part maildir_format = true delivery_date_add envelope_to_add return_path_add user = $domain group = $domain mode = 0640 mode_fail_narrower = false  ##################################################### ### end transport/40_exim4-config_dovecot_transport ##################################################### 

Я не думаю, что это будет так актуально, но вот конфигурация для аутентификации Exim SMTP-входов через Dovecot:

# Authenticate against Dovecot dovecot_plain: driver = dovecot public_name = PLAIN server_socket = /var/run/dovecot/auth-client server_set_id = $auth1  dovecot_login: driver = dovecot public_name = LOGIN server_socket = /var/run/dovecot/auth-client server_set_id = $auth1 

Обратная трассировка exim из оболочки на "example.com":

# exim -bt server@example.com server@example.com router = dovecot_router, transport = dovecot_transport 

Обратный путь exim до оболочки из несвязанной системы Debian, которая использует exim в спутниковом режиме:

# exim -bt server@example.com R: smarthost for server@example.com server@example.com router = smarthost, transport = remote_smtp_smarthost host mailhost.my-isp.example.org [a.b.c.d] port=587 host mailhost.my-isp.example.org [a.b.c.e] port=587 

Обратные следы были одинаковыми при запросах «adam@example.com» и «server@example.com» из обеих систем.

Пожалуйста, дайте мне знать, если потребуется дополнительная информация, или если вы хотите, чтобы я провел еще какие-то тесты. Я надеюсь, что это довольно простая проблема конфигурации, которую я пропустил.

Я ценю это проблема с сервером, а не проблема конечного пользователя. Первоначально я спрашивал об этом в Server Fault, но это не считалось «бизнесом» для этого сообщества.

Спасибо за прочтение. :)

0

0 ответов на вопрос