Маршрутизация почты от домена к внешнему провайдеру
У меня есть сервер с именем хоста и DNS example.com
, У меня также есть аккаунт Google Apps для user@example.com
, У меня правильно настроены записи MX, и я могу отправлять и получать электронные письма от и до user@example.com
с моей личной электронной почтой.
На сервере example.com
, У меня есть код отправки электронной почты с использованием sendmail admin@example.com
, У меня нет SMTP настроен с sendmail. Я могу отправлять почту с сервера example.com
в user@otherdomain.com
, но когда я пытаюсь отправить письмо с сервера example.com
в admin@example.com
Я получаю следующую ошибку в /var/log/maillog
:
... while talking to [127.0.0.1]:
>>> DATA
<<< 550 5.1.1 <user@example.com>... User unknown
550 5.1.1 <user@example.com>... User unknown
<<< 503 5.0.0 Need RCPT (recipient)
Я предполагаю, что это потому, что sendmail получает письмо user@example.com
, и идет "ах-ха! Я example.com! Мне просто нужно отправить его пользователю на этом сервере." вместо того, чтобы просматривать записи MX и видеть, что их нужно переслать на серверы Gmail.
Как я могу сказать sendmail пересылать все сообщения на серверы gmail независимо от домена?
Примечание: домены изменены на example.com
защищать невинных.
2 ответа
Проблема, как вы поняли, заключается в том, что имя хоста вашего сервера example.com
заставляя MTA на этом сервере думать, что любые сообщения электронной почты @example.com
должны быть доставлены на месте.
Быстрое решение - просто изменить имя хоста, например, позвонить на сервер www.example.com
,
В качестве альтернативы вы используете функцию MAIL_HUB sendmail для перенаправления локальной почты на другой сервер: в наборе файлов макросов sendmail.mc:
define(`MAIL_HUB', `mailer:servername')
При этом имя сервера будет заменено именем хоста вашей основной записи MX. Это перенаправит сообщения, отправленные с вашего сервера на <username>@<hostname>
т.е. drew@example.com
на имя сервера.
Фактический ответ на вопрос: "Как я могу сказать sendmail пересылать все сообщения на серверы gmail независимо от домена?" является:
Вы этого не хотите. Gmail не является открытым ретранслятором и будет отклонять все, что не обрабатывается локально.
Функция существует и называется жаргоном SMART_HOST на жаргоне sendmail. Для этого требуется исходящий SMTP-сервер, специально настроенный для ретрансляции вашего IP-адреса (диапазона), такой как исходящий SMTP-сервер вашего интернет-провайдера.
define(`SMART_HOST', `smtp.your.provider')dnl
Назовите хост
hostname.example.com
(как сообщаетсяhostname --fqdn
).
Процедура зависит от ОС / дистрибутива.Если
example.com
остается в списке локальных доменов электронной почты, затем отключите автоматическую настройку списка локальных доменов электронной почты.
Проверка списка локальных почтовых доменов:
Как выполнить root
echo $=w | sendmail -bt
Удаление автоконфигурации списка локальных почтовых доменов:
В sendmail.mc добавьте следующую строку, перекомпилируйте sendmail.cf и перезапустите / перезагрузите демон sendmail
define(`confDONT_PROBE_INTERFACES',`True')
Локальные почтовые домены могут быть явно указаны в /etc/mail/local-host-names
,