Назад | Перейти на главную страницу

серверы пересылки exim4 не маршрутизируются для внешней почты, но не для внутренней

Я настроил exim4 для пересылки электронной почты на определенные адреса.

Адреса находятся в виртуальных доменах, для которых сервер является основным MX.

Другие адреса в этих доменах доставляются в локальные почтовые ящики, но адреса, настроенные для пересылки, отправляются во внешние домены, для которых сервер не является MX, и почта не должна доставляться в локальный почтовый ящик.

например если сервер является основным MX для example.com, он должен доставлять почту локально для user1@example.com но user2@example.com следует направить user2realname@gmail.com.

Все данные для виртуальных доменов и адресов хранятся в MySQL.

ОС сервера - Debian.

Конфиг для перенаправляющего роутера (в /etc/exim4/conf.d/router/400_exim4-config_mysql_forward как следует:

mysql_forward:
  debug_print = "R: forwarder(mysql) for $local_part@$domain"
  driver = redirect
  no_verify
  no_expn
  check_ancestor
  forbid_smtp_code = true
  skip_syntax_errors
  domains = +local_domains
  data = ${lookup mysql{SELECT forward_to FROM mail_forwarders WHERE domain='${quote_mysql:$domain}' AND localpart='${quote_mysql:$local_part}' AND active=1} {${sg{$value}{\\n}{, }}}}

exim -bt user2@example.com выводит что-то вроде:

R: forwarder(mysql) for user2@example.com
R: dnslookup for user2realname@gmail.com
user2realname@gmail.com
    <-- user2@example.com
  router = dnslookup, transport = remote_smtp
  host gmail-smtp-in.l.google.com      [74.125.133.27]  MX=5
  host alt1.gmail-smtp-in.l.google.com [173.194.222.27] MX=10
  host alt2.gmail-smtp-in.l.google.com [74.125.200.27]  MX=20
  host alt3.gmail-smtp-in.l.google.com [74.125.23.27]   MX=30
  host alt4.gmail-smtp-in.l.google.com [173.194.72.27]  MX=40

Я могу отправлять почту с помощью локальной команды, и она успешно пересылается.

Однако при отправке почты из внешнего источника письмо отклоняется с 550 Unrouteable address, например:

telnet mailserver.example.com 25
Connected to mailserver.example.com.
Escape character is '^]'.
220 mailserver.example.com ESMTP
EHLO office.mylocaldomain.com
250-mailserver.example.com Hello office.mylocaldomain.com [21.22.23.24]
250-SIZE 52428800
250-PIPELINING
250 HELP
MAIL FROM: <user@mylocaldomain.com>
250 OK
RCPT TO: <user2@example.com>
550 Unrouteable address
QUIT

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

Оказалось, что это вина no_verify в конфиге роутера. Документы рекомендуют этот параметр для серверов пересылки, но, возможно, это подходит только при локальной пересылке.