【Docker】WordPress公式も!PHP公式Docker(Apache版)でメールが送受信できない件の対策
確認したのはクライアントの都合で、WordPress4系の公式Dockerコンテナなのですが、
- https://hub.docker.com/_/phpのApache版にはsendmailがない(メール送信不可)
- https://hub.docker.com/_/wordpress/のApache版は内部で↑(PHP+Apache版コンテナ)を読んでいるので、WordPress公式Dockerコンテナでメール送信できない。
- ちなみにPHP-FPM版は多分大丈夫(AlpineLinuxには最初からsendmailがあるはず)
対策について調べていると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のお問い合わせフォーム用プラグインとかからメールが届くようになるはず。いずれ標準搭載されるかな。