Как настроить sendmail для отправки почты через запись MX, а не на localhost?

Как настроить sendmail для отправки почты через запись MX, а не на localhost?

Я пытаюсь заставить sendmail передавать почту на серверы, указанные в записях MX, поэтому, когда сервер отправляет электронное письмо на[email protected]Я хочу, чтобы он пропустил localhost и перешел сразу на gmail.

Я просмотрел документы sendmail, но не совсем понимаю, как объяснить мою ситуацию. По сути, имя хоста моего сервера — 'www.domain.com', но когда я отправляю письмо на '[email protected]' оно попадает в местный почтовый ящик.

Когда я запускаю sendmail в режиме отладки:

sendmail -bt
> $=w

Я получил:

www.domain.com
www.domain.com.
domain.com
localhost
[54.245.___.___] 

Итак, он перехватывает всю исходящую почту на domain.com. Я не хочу, чтобы она доходила до localhost. Я хочу, чтобы она отправлялась на серверы Gmail.

Вся почта, направленная на другие адреса, работает нормально. У меня также настроен sendmail на использование DKIM.

Я добавил запись в mailertable (и перестроил mailertable.db, и перекомпилировал файл mc>cf), но я не уверен, нужно ли это делать и правильно ли я это делаю.

domain.com esmtp:[aspmx.l.google.com]

Как мне разрешить отправку почты[email protected]покинуть сервер?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Вот мой файл sendmail.mc:

divert(-1)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl

define(`confDEF_USER_ID', ``8:12'')dnl

define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl

define(`confTO_IDENT', `0')dnl

FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl

FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

FEATURE(`accept_unresolvable_domains')dnl
FEATURE(`relay_based_on_MX')dnl
FEATURE(`relay_entire_domain')dnl

LOCAL_DOMAIN(`localhost.localdomain')dnl

MASQUERADE_AS(`domain.com')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl

EXPOSED_USER(`root')dnl

FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl

INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')

MAILER(smtp)dnl
MAILER(procmail)dnl

решение1

Я наконец нашел довольно всеобъемлющее решениездесь. Подводя итог, можно сказать, что существует ряд вариантов (большинство из которых были упомянуты в других ответах, но по каким-то причинам не сработали в моем конкретном случае).

Опция 1:удалить запись из /etc/mail/local-host-names

для меня этот файл был уже пуст

Вариант 2:удалить все записи LOCAL_DOMAIN в файле mc

у меня не было ни одного

Вариант 3:скажите sendmail не проверять интерфейсы

define(`confDONT_PROBE_INTERFACES', `true')dnl

в моем случае это было установлено, но проблемный хост все еще присутствовал в классе w sendmail

Вариант 4:переименуйте сервер. Внешняя ссылка, предоставленная выше, даже конкретно говорит: «Если я хочу удалить whipple.org из класса w, я могу переименовать сервер, например, в frodo.whipple.org, www.whipple.org, elvis.whipple.org».

для меня этого было недостаточно. с хостом по имениwww.домен.com, класс sendmails w по-прежнему содержал ОБА www.domain.com И domain.com (даже после перезагрузки)

Вариант 5: ЭТО ТО, ЧТО МНЕ ПОДОШЛОдобавьте LOCAL_RULE_0 в файл sendmail mc

LOCAL_RULESETS
LOCAL_RULE_0
R$* < @domain.com. > $*  <tab>$#esmtp $@ mail.domain.com $: $1<@domain.com.>$2

это должно быть в конце файла и <tab>должно быть настоящим символом табуляции

решение2

Измените имя хоста сервера. Нет никаких веских причин, по которым имя хоста когда-либо будет равнозначно голому доменному имени.

решение3

Вот как я понимаю ваш вопрос:

  1. Вы установили Sendmail, чтобы использовать его для отправки электронной почты со своего веб-сайта.

  2. Вы настроили Sendmail как авторитетный сервер электронной почты для вашего публичного пространства имен DNS.

  3. Вы не хотите, чтобы Sendmail был авторитетным для вашего публичного пространства имен DNS. Вы хотите, чтобы электронная почта, отправленная в ваше публичное пространство имен DNS, отправлялась на вашу почту, размещенную в Google.

Решение: перенастройте Sendmail так, чтобы он не был полномочным для вашего публичного пространства имен DNS.

решение4

1) Sendmail автоматически заполняет список локальных доменов электронной почты ( $=w).

Вы не сможете отключить его с помощью следующей строки в sendmail.mc:

define(`confDONT_PROBE_INTERFACES',`True')

Вы можете добавлять локальные адреса электронной почты в /etc/mail/local-host-namesфайл «вручную».
(После этого потребуется выполнить HUPing или перезапустить демон sendmail)

2) Sendmail может добавить (автоматически настроенное) «имя электронной почты этого хоста» ( $j) в список локальных доменов электронной почты.

Вы можете определить «имя электронной почты этого хоста»

define(`confDOMAIN_NAME',`hostname.example.net')

3) mailertableестьНЕТпроконсультируйтесь по вопросам доставки на домены, перечисленные в $=w.

Связанный контент