Маршрутизация почты от домена к внешнему провайдеру

У меня есть сервер с именем хоста и 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
  1. Назовите хост hostname.example.com (как сообщается hostname --fqdn).
    Процедура зависит от ОС / дистрибутива.

  2. Если example.com остается в списке локальных доменов электронной почты, затем отключите автоматическую настройку списка локальных доменов электронной почты.

Проверка списка локальных почтовых доменов:
Как выполнить root

echo $=w | sendmail -bt

Удаление автоконфигурации списка локальных почтовых доменов:
В sendmail.mc добавьте следующую строку, перекомпилируйте sendmail.cf и перезапустите / перезагрузите демон sendmail

define(`confDONT_PROBE_INTERFACES',`True')   

Локальные почтовые домены могут быть явно указаны в /etc/mail/local-host-names,

Другие вопросы по тегам