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