WordPress を Kubernetes で作り直したのですが、コンテナの原則は 1 コンテナ 1 プロセスであるため、メール送信用の MTA は Postfix をインストールしたコンテナを作成して WordPress コンテナとは別としていました。
最初の問題として、Postfix コンテナは 127.0.0.1 で参照できるのに WordPress からメールが送信されないという問題でした。これは sendmail をインストールすることで解決しました。非コンテナでの WordPress 構築の場合は MTA として同一ホスト内に Postfix もインストールするため、内部的に sendmail もインストールされ問題なかったのですが、コンテナの場合はこのような問題もありますね。
次の問題としてメールは送信されるようになったが、それが異常に遅いということです。tcpdump でも調査しましたが、Postfix にパケットが送られるまで 10 秒弱かかりますので、かなり違和感のある遅さです。これは sendmail の名前解決の問題によるもので、どうやら MX レコードの探索で時間がかかるようです。さらに、WordPress 自体は MX レコードに関係なく localhost の MTA に送信しようとするため、それにより異常な遅延が発生していたようです。なお、この問題は以下のように hosts を書き換えることで対処できます。実際に私の環境でも遅延は無くなりました。
127.0.0.1 localhost.localdomain localhost yourhostname
しかし、この環境は Kubernetes であり、hosts は自動生成されます。そして hosts への追加や、全てを書き換えることはできますが、部分的な変更は今の私が知る限り無理そうでした。このため、最終的にWordPress を実行するコンテナに Postfix を含める方針とすることで解決としています。
コンテナは非常に便利ですが、各ミドルウェアはコンテナで動くように設計されているわけではないのがほとんどなので、このようにうまくいかないこともありますね。