Dockerのゲストコンテナ内からホストのsendmailを使ってメールを送信する


Dockerのゲストコンテナ内からホストのsendmailを使ってメールを送信するDockerのゲストコンテナ内からホストのsendmailを使ってメールを送信する

※※※開発環境用の設定なので公開サーバでこの設定は行わない。※※※

■やりたいこと
ホストのCentOS7のsendmailを使ってコンテナ内からメールを送りたい
そのままの状態だと接続に失敗している

■ホストの構成
VagrantにCentOS7をインストールしてそこにDockerを入れている

■ゲスト側からホストのIPを把握する

# ip route
default via 172.18.0.1 dev eth0 
172.18.0.0/16 dev eth0  proto kernel  scope link  src 172.18.0.2 

この場合ホストのIPは「172.18.0.1」

■ホスト側の最初の状態

# netstat -an | grep 25
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN

ローカル127.0.0.1からのSMTPだけ受け付けている状態
ホスト側のsendmailでローカル以外からもSMTPを受け付けるようにする必要がある

■設定ファイルをコピーして、ローカルだけに制限している行を無効化する

# cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.org
# vim /etc/mail/sendmail.mc
# diff /etc/mail/sendmail.mc.org /etc/mail/sendmail.mc
118c118
< DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
---
> dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

■「sendmail.mc」を「sendmail.cf」へ変換する

# m4 sendmail.mc > sendmail.cf
-bash: m4: command not found

入ってなかった。。

■ツールが入っていないのでインストール

# yum -y install sendmail-cf

これで「m4」が入る

■もう一度変換

# cd /etc/mail/
# m4 sendmail.mc > sendmail.cf

■リレーを許可するIPを指定する

# cp /etc/mail/access /etc/mail/access_org
# vim /etc/mail/access
# cat /etc/mail/access
Connect:localhost.localdomain           RELAY
Connect:localhost                       RELAY
Connect:127.0.0.1                       RELAY
Connect:XXX.XXX.XXX.XXX                 RELAY <- ゲストIP追加 172.17.0.0など

■再起動

# systemctl restart sendmail.service

■確認

# netstat -an | grep 25
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN

あとはfirewallなど適切に設定すればOK

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です