Sendmail пытается доставить локально, не смотря на smarthost

Приветствую. Есть сервер (на самом деле jail, но это роли не играет). Он называется, для примера, engine.example.com. На нём крутится бэк-энд веб-сервера FreeBSD+NGinx+PHP. На нём же поднят штатный sendmail, настройки которого дефолтны, за исключением smarthost — здесь указан наш релей (local.example.com). Если PHP-скрипт генерирует письмо, оно отправляется штатными средствами: попадает сначала на локальный sendmail, который следом пересылает его на релей, а тот уже отправляет его адресату. Схема достаточно простая и эффективная. И работает, за исключением следующего момента:
Если я отправляю письмо на любой адрес кроме some@example.com, оно успешно уходит на смартхост, но если я отправляю на some@example.com, сендмэйл пытается это письмо доставить локально. Естественно, этого ящика на этом сервере не существует и в логах записана ошибка доставки. Как сделать так, чтобы все письма на все домены доставлялись через smarthost? И чтобы родной sendmail ничего не пытался доставить локально, кроме писем для адресатов без доменной части.

Умные комментарии типа «поставить postfix, exim, etc» прошу не оставлять: не найду выход — поставлю. Хочу разобраться в проблеме, а не уйти от неё.

Ниже проиллюстрирую логами.

Это попытка доставить письмо на corporate@example.com, sendmail зачем-то пытается доставить его локально, не смотря на smarthost:
Dec 30 01:49:00 engine sendmail[67504]: pBTLn0Fq067504: from=root, size=91, class=0, nrcpts=1, msgid=<201112292149.pBTLn0Fq067504@example.com>, relay=root@localhost
Dec 30 01:49:00 engine sendmail[67504]: pBTLn0Fq067504: to=corporate@example.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30091, relay=[127.0.0.1] [127.0.0.1], dsn=5.1.1, stat=User unknown
Dec 30 01:49:00 engine sendmail[67504]: pBTLn0Fq067504: pBTLn0Fr067504: DSN: User unknown


Это тот же sendmail, корректно отправляет письмо на другой ящик:
Dec 30 02:05:07 engine sm-mta[71184]: pBTM576C071184: from=<noreply@example.com>, size=2276, class=-60, nrcpts=1, msgid=<eb14d11a7e7b4b34098b5f098a8e7206@example.com>, proto=ESMTP, daemon=IPv4, relay=engine.example.com [212.24.0.0] (may be forged)
Dec 30 02:05:07 engine sendmail[71183]: pBTM57Pl071183: to=kent2spb <some@mail.ru>, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=140055, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (pBTM576C071184 Message accepted for delivery)
Dec 30 02:05:07 engine sm-mta[71188]: pBTM576C071184: to=<some@mail.ru>, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=140276, relay=local.example.com. [10.0.0.99], dsn=2.0.0, stat=Sent (OK id=1RgO5z-0009KC-FJ)
  • Вопрос задан
  • 7536 просмотров
Пригласить эксперта
Ответы на вопрос 4
@MrCrock
Почтовый сервер sendmail считает почтовый домен локальным (то есть обрабатывает почту для данного домена) в следующих случаях, если на сервер указывают записи:
— Запись A или MX в прямой зоне DNS (проверяется командой host имя.домена)
— Hostname сервера
— Записи в /etc/hosts
— Записи в обратной зоне DNS (проверяется командой host ip-address)
— Записи в /etc/mail/local-hosts-names, /etc/mail/virtusertable и непосредственно имя домена может быть определено в конфигах sendmail (hostname.mc, sendmail.mc и из него который создается sendmail.cf — команда grep -i domain /etc/mail/* найдет эти записи.
Ответ написан
Riateche
@Riateche
Укажите в директиве local-host-names что-то, не совпадающее с этим доменом (например, localhost, несуществующий домен или пустое значение).
Ответ написан
Ilya_Drey
@Ilya_Drey
А у Вас случаем для домена example.com как MX запись прописан не этот сервер?
Ответ написан
@like-person
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы