#dockerのメール送信ニーズを解決します。
docker pull takeyamajp/postfix
このコンテナはPostfixのTLS暗号化通信をサポートしているため、業務用途にも安心して使えます。
ユーザー or 他のコンテナ
— TLS(任意) —> このコンテナ
— TLS(送信先が対応していたら) —> 送信先メールサーバー
http://www.postfix.org/TLS_README.html
また、Synology NASなどの通知用SMTPとして最適です。
#以下、簡単な説明です。
FROM centos:centos7
...
ENV TIMEZONE Asia/Tokyo
ENV HOST_NAME smtp.example.com
ENV DOMAIN_NAME example.com
ENV MESSAGE_SIZE_LIMIT 10240000
ENV AUTH_USER user
ENV AUTH_PASSWORD password
EXPOSE 25
EXPOSE 587
##このイメージについて
CentOS 7 の公式イメージをベースに作成しています。
https://hub.docker.com/_/centos
変数の値はコンテナを再作成しなくても変更できます。
例えば、コンテナをstopして最大メールサイズやパスワードを変更してから再startする事で新しい値が反映されます。
##メール送信ログ
業務用途でなければ特に気にしなくて大丈夫です。
ログはDocker logsに出力されます。
Docker界のベストプラクティスに従って、コンテナ内でsupervisordを使ってrsyslog経由でログ収集しています。
##タイムゾーン
日本で使用する場合は気にしなくて大丈夫です。
もし、海外で使用する場合はTIMEZONE
の値を変更してください。
CentOSで使用可能な値をそのまま設定できます。
wikipedia : List of tz database time zones
https://en.m.wikipedia.org/wiki/List_of_tz_database_time_zones
##ホスト名、ドメイン名
ホスト名とドメイン名をHOST_NAME
とDOMAIN_NAME
に設定してください。
送信先のメールサーバーからこのメールサーバーの正当性を検証できるように、別途DNSサーバーに以下のレコードを登録する必要があります
- Aレコード
- SPFレコード
無料のツールでDNS設定が正しいかどうか確認できます。
インターリンク オンライン確認ツール
https://diag.interlink.or.jp/spf
カゴヤさんなど一部のレンタルサーバーでは、SPFレコードを自動的に設定してくれます。
このメールサーバーは送信専用で受信する機能がありません。そのため、MXレコードを登録する必要はありません。
自分への通知目的なら有料のドメインを取得しなくても、MyDNS.jpなど無料でサブドメインを割り当ててもらえるDDNSサービスで十分です。
https://www.mydns.jp
無料で取得できるドメイン名はスパム認定されている事が多いため、受信側でホワイトリストに登録した方が良いでしょう。
MyDNS.jpでも自動でSPFレコードを設定してくれるようです。
##メールサイズ
添付ファイルなどでメールサイズが10MBを超える場合はMESSAGE_SIZE_LIMIT
の値を増やしてください。
単位はバイトです。
##認証アカウント
アカウント情報をAUTH_USER
とAUTH_PASSWORD
に設定してください。
実際の認証で使用するユーザー名はuser@example.com
のようなメールアドレス形式になります。
@
の右側(ドメイン名)の部分はDOMAIN_NAME
に設定した値になります。
このユーザー名はメールアドレス形式になっていますが、実際に送信されるメールには含まれません。
メール送信の承認だけに使用される情報です。
メーラーやメール送信プログラムなどで、任意の送信元アドレスを使用することができます。
(例: シンプルにno-reply@example.com
とするか、目的別にwordpress@example.com
とかerror-info@example.com
など使い分けても良いでしょう)
##ポート番号
ポート25と587は同じ設定にしてあるため、どちらを使っても構いません。
もし、コンテナをhostネットワークで動かしたい場合、かつレンタルサーバーでポート25がブロックされている場合は、サブミッションポート587を使ってください。
—
以上です。
それでは良いメールサーバーライフを。