Я пытаюсь заставить sendmail пересылать почту на серверы, указанные в записях MX, поэтому, когда сервер отправляет электронное письмо на адрес me@domain.com, я хочу, чтобы он пропустил localhost и сразу перешел к gmail.
Я просмотрел документы по sendmail, но не совсем понимаю, как объяснить мою ситуацию. По сути, имя хоста моего сервера - «www.domain.com», но когда я отправляю электронное письмо на «me@domain.com», оно попадает в локальную почтовую папку.
Когда я запускаю 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]
Как мне получить разрешение на отправку почты с адресом users@domain.com с сервера?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Вот мой файл 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: удалить запись из / etc / mail / local-host-names
для меня этот файл уже был пуст
Вариант 2: удалить любую запись LOCAL_DOMAIN в файле mc
у меня не было ни одного
Вариант 3: сказать sendmail не проверять интерфейсы
в моем случае это было установлено, но проблемный хост все еще присутствовал в классе w sendmail
Вариант 4: переименовать сервер. внешняя ссылка, приведенная выше, даже специально говорит: «Если я хочу удалить whipple.org из класса w, я могу переименовать сервер в frodo.whipple.org, www.whipple.org, elvis.whipple.org, например».
для меня этого было недостаточно. с хостом с именем www.domain.com класс sendmails все еще содержал ОБА www.domain.com И domain.com (даже после перезагрузки)
Вариант 5: ЭТО РАБОТАЕТ ДЛЯ МЕНЯ, добавьте LOCAL_RULE_0 в файл mc sendmail
это должно идти в конце файла и
<tab>
должно быть фактическим символом табуляцииисточник
bestmx
карту, чтобы сделать ее общей.Измените имя хоста сервера. Нет никаких веских причин для того, чтобы имя хоста совпадало с именем голого домена.
источник
Вот мое понимание вашего вопроса:
Вы установили Sendmail, чтобы использовать его для отправки электронной почты с вашего сайта.
Вы настроили Sendmail как официальный почтовый сервер для вашего публичного пространства имен DNS.
Вы не хотите, чтобы Sendmail был авторитетным для вашего публичного пространства имен DNS. Вы хотите, чтобы электронная почта отправлялась в общедоступное пространство имен DNS и отправлялась на вашу электронную почту, размещенную в Google.
Решение. Переконфигурируйте Sendmail, чтобы он не был доверенным для вашего публичного пространства имен DNS.
источник
Я не слишком разбираюсь в настройке sendmail, но считаю, что в отношении записей MX все должно быть правильно. Тем не менее, я полагаю, что в ходе поиска DNS приоритетным может быть то, что sendmail сначала обращается к локальному файлу hosts
/etc/hosts
в большинстве операционных систем на основе Unix, а затем использует свои DNS-серверы. Если это так, и в файле hosts есть запись, которая ссылается на ваш компьютер как domain.com, если вы зададите его в качестве имени хоста, это может быть тем, что происходит. Вы можете отредактировать файл hosts в соответствии с вашими потребностями в этом конкретном случае, изменив записи или добавив новые.Или вы можете настроить sendmail на игнорирование файла хостов локальной системы при разрешении URL. Я не уверен, как это сделать.
источник
1) Sendmail автоматически заполняет список локальных почтовых доменов (
$=w
).Вы не можете отключить его, используя следующую строку в вашем sendmail.mc:
Вы можете добавить локальные письма "вручную" в
/etc/mail/local-host-names
файл.(Это требует HUPing или перезапуска демона sendmail после)
2) Sendmail может добавить (автоматически настроенное) «имя хоста по электронной почте» (
$j
) в список локальных доменов электронной почты.Вы можете определить «это имя электронной почты хоста»
3)
mailertable
является НЕ consultede для поставок в областях , перечисленных в$=w
.источник
confDONT_PROBE_INTERFACES',
True ') уже (и всегда было) включеноКод, который отправляет почту, вы используете полный адрес электронной почты или сервер отправляет почту через локальную учетную запись? Потому что:
Это говорит sendmail, чтобы доставить всю почту на users@localhost.localdomain локально
И это говорит sendmail переписать домены в локальных адресах на domain.com, но не меняет локальную доставку .
Шаг 1: Вернитесь к конфигурации по умолчанию.
Шаг 2: Используйте конфигурацию по умолчанию.
источник