Приветствую. Есть сервер (на самом деле 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)