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

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

У меня есть сервер с именем хоста и 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 чтобы защитить невиновных.

  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.

Проблема в том, как вы уже поняли, что имя хоста вашего сервера 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 не является открытым ретранслятором и отклоняет все, что не обрабатывается локально.

Эта функция существует и на жаргоне sendmail называется SMART_HOST. Для этого требуется исходящий SMTP-сервер, специально настроенный для ретрансляции вашего IP-адреса (диапазона), такой как исходящий SMTP-сервер вашего интернет-провайдера.

define(`SMART_HOST', `smtp.your.provider')dnl