PHPのアプリケーションからPostfixで自分宛てのメールだけがどうしても送信できない

PHPのアプリケーションを新サーバに移行完了後、ユーザからメール通知が送信できないとの通報。一部動作しているようだが、自分宛てのテストメールが届かないようだ。

まず各バージョンはこちら。前の事件と同じサーバ。

Ubuntu 22.04.1 LTS
Postfix 3.6.4

まず、自分のオフィスのアドレス(xxx@isko.jp)宛に送信。これは届く。しかし、お客さんのアドレス(xxx@example.com)宛には届かない。はて不可思議。sendmailコマンドを直接叩いてみる。

$ sendmail myself@example.com
From: newsletter@new.example.com
To: myself@example.com
Subject: Hejsan!

Hejsan hoppsan!
.

デーモン閣下からメールが届く。

From MAILER-DAEMON Tue Sep 27 13:37:25 2022
Return-Path: <>
X-Original-To: newsletter@new.example.com
Delivered-To: newsletter@new.example.com
Received: by new.example.com (Postfix)
        id 342E4A0756; Tue, 27 Sep 2022 13:34:49 +0900 (JST)
Date: Tue, 27 Sep 2022 13:34:49 +0900 (JST)
From: MAILER-DAEMON@new.example.com (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
----- 中略 -----
<myself@example.com>: unknown user: "myself"
----- 後略 -----

送りながらmail.logを確認。

# tail -f /var/log/mail.log
Sep 27 13:37:25 new postfix/pickup[94494]: 321ABA0755: uid=1001 from=<hogehoge>
Sep 27 13:37:25 new postfix/cleanup[95012]: 321ABA0755: message-id=<20220927043725.321ABA0755@new.example.com>
Sep 27 13:37:25 new postfix/qmgr[94495]: 321ABA0755: from=<newsletter@new.example.com>, size=357, nrcpt=1 (queue active)
Sep 27 13:37:25 new postfix/local[95014]: 321ABA0755: to=<myself@example.com>, relay=local, delay=3.4, delays=3.4/0/0/0.01, dsn=5.1.1, status=bounced (unknown user: "myself")
Sep 27 13:37:25 new postfix/cleanup[95012]: 3650FA0756: message-id=<20220927043725.3650FA0756@new.example.com>
Sep 27 13:37:25 new postfix/bounce[95015]: 321ABA0755: sender non-delivery notification: 3650FA0756
Sep 27 13:37:25 new postfix/qmgr[94495]: 3650FA0756: from=<>, size=2281, nrcpt=1 (queue active)
Sep 27 13:37:25 new postfix/qmgr[94495]: 321ABA0755: removed
Sep 27 13:37:25 new postfix/local[95014]: 3650FA0756: to=<hogehoge@new.example.com>, relay=local, delay=0, delays=0/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Sep 27 13:37:25 new postfix/qmgr[94495]: 3650FA0756: removed

あれ、自分のサーバに送っているみたいに見えますね。

DNSを疑う

目的のサーバに対して送信ができていない。名前解決がおかしいのでしょうか。DNSを変更してみる。

# nslookup -type=MX -server=xxx.xxx.xxx.xxx example.com
*** Invalid option: server=xxx.xxx.xxx.xxx
Server:         xxx.xxx.xxx.xxx
Address:        xxx.xxx.xxx.xxx#53

Non-authoritative answer:
example.com mail exchanger = 10 mx.example.com. <--ok

Authoritative answers can be found from:

# vi /etc/resolv.conf

#nameserver 127.0.0.53
nameserver xxx.xxx.xxx.xxx <- 有効なDNS
options edns0 trust-ad
search .

# systemctl restart postfix.service

結果は変わらず。

解決

DNSは関係なさそう。やはりPostfixの問題でしょうか。

vi /etc/postfix/main.cf

myhostname = new.example.com
mydomain = example.com
mydestination = $myhostname, localhost.example.com, localhost, $mydomain

あー!

mydestination = $myhostname, localhost.example.com, localhost

このように変更して解決。mydestinationに、送信先のドメインが含まれていると、自分自身のサーバ宛に送信しようとして、ユーザやエイリアスが見つからず、送信できないという罠でした。

参考

postfix でメールが届かない status=bounced (unknown user: “hoge”)
https://qiita.com/myzkyy/items/cfb6b1f95eb6af6261ec
2022-09-27 アクセス