【WordPress公式も】PHP公式Docker(Apache版)でメールが送受信できない件の対策

確認したのはクライアントの都合で、WordPress4系の公式Dockerコンテナなのですが、

対策について調べているとssmtpをインストールするのが最も手っ取り早いそうです。まずSSMTPをインストールして、php.iniのsendmail_pathにssmtpを指定しておきます。

FROM wordpress:4.7.2-php7.0-apache
RUN  apt-get update && apt-get install -y ssmtp && apt-get clean && rm -rf /var/lib/apt/lists/* \
&&   echo "sendmail_path = /usr/sbin/ssmtp -t -i" >> /usr/local/etc/php/conf.d/php-sendmail.ini \

その後、/etc/ssmtp/ssmtp.confを編集します。WordPressやPHPのmail()を使うなら、

mailhub=【SMTPサーバのIPアドレス。Postfixが動いてるかIPとかgmailとか】
hostname=localhost.localdomain
FromLineOverride=YES
  • FromLineOverride=YESにすると、PHP側で変更できるようになるので設定しよう。
  • hostnameはデフォルトのままだとGmailに送れなかった(ドメイン形式が必須っぽい)ので、とりあえず「localhost.localdomain」にしておき、mail()の第4引数で再設定。

これで、PHPのmail関数でメールが送れるようになったり、WordPressのお問い合わせフォーム用プラグインとかからメールが届くようになるはず。いずれ標準搭載されるかな。