docker/alpineでどこにも配送しないsmtpサーバーを作る
ゴール
alpineのコンテナに postfixをインストールしてどこにも配送しないsmtpサーバーを作る。
さらにsaslauthdをインストールし、コンテナの外からSMTP AUTHが使えるようにする。
対象環境
windows 10 で動作する docker for windows
コンテナ起動
alpine:latestイメージを使って新しいコンテナを起動する。
コンテナ外からSMTPにアクセスするためにポート25を開ける。
PS > docker run -it -d -p 25:25 --name my_alpine alpine
パッケージインストール
必要なのはpostfix,saslauthd関連。
# apk update
# apk add postfix postfix-pcre
# apk add mailx
# apk add cyrus-sasl cyrus-sasl-crammd5
# apk add rsyslog
rsyslogを入れてるのは postfixが出力するログを確認するため。まじめなコンテナを作る場合はsyslog専用コンテナを作る方がよいかも。
postfixの設定
前に設定した テスト用に外に一切配送しないSMTPサーバーを作る の設定を流用して外に配送しないようにする。
vi /etc/postfix/main.cf
myhostname = localhost.localdomain
mydomain = localdomain
myorigin = $myhostname
mydestination = $myhostname, $mydomain
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_client_restrictions=permit_sasl_authenticated,reject
alias_maps = hash:/etc/postfix/aliases,pcre:/etc/postfix/aliases.regexp
transport_maps = pcre:/etc/postfix/transport_maps
smtpd_sasl_application_name = smtpd
broken_sasl_auth_clients = yes
vi /etc/postfix/aliases.regexp
/(?!^root$|^mailuser$)^.*$/ mailuser
vi /etc/postfix/transport_maps
/^.*@.*$/ local
エイリアス設定を有効にするために newaliases を実行する必要がある。
普通のOSだとpostfixをインストールしたら関連ディレクトリとか勝手に作ってくれるけど、そんなにうまくはいかないのでメールボックス用のディレクトリも作る
# newaliases
# mkdir /var/mail
saslauthdの設定
外からのメール送信をSMTP AUTHで認証したいので、そのように設定する。
vi /etc/sasl2/smtp.conf
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5
log_level: 7
送信用ユーザー作成
メール送信に使うユーザーを作る。
ローカルユーザーだけ作っても外からは認証できないのでsasl用のユーザーも作る
# adduser mailuser
# saslpasswd2 -c -u localhost.localdomain mailuser
saslユーザーDBをpostfixが読み込めるように所有者を変更する
# chown postfix /etc/sasldb2
サービスを開始する
# postfix start
# saslauthd -a shadow
# rsyslogd -n &
それぞれ supervisorとかなんとかで起動するようにした方が良いのだけど、今のところここまで。
この後
これらのタスクを Dockerfileにまとめる。
その他
postfixとか saslauthd とかdocker hubにいろいろイメージはあるわけだけど、どうしてここまで苦労して作るのか、と言えば思いがけず外にテスト用メールを漏らしたくないから。
あと、現在のalpine:latest でインストールできる cyrus-sasl には pam認証がない。必要ならソースからビルド、ということになる。
Author And Source
この問題について(docker/alpineでどこにも配送しないsmtpサーバーを作る), 我々は、より多くの情報をここで見つけました https://qiita.com/okadabasso/items/efc42df8d8b96dacef92著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .