はじめに
以前こちらでPostfixを利用してメール送信サーバを構築するということを実践しましたが、今回も例によってDockerで再構築していきたいと思います。
というのも、前回の構築方法は無駄な工程も多かったのでついでにそちらも改修したいと思います。
目標
メール送信を行えるコンテナを作成し、自身のGmailアカウントにメールを送信する。
前提
- 独自ドメイン取得済み
- Docker環境構築済み
- 基本的な事はこちらを参照
構築手順
ディレクトリ構成
$ tree .
.
|-- Dockerfile
|-- files
| |-- main.cf.org
| `-- sasl_passwd
|-- init
| `-- sed.sh
`-- README.md
Dockerfile作成
FROM centos:7
# update
RUN yum -y update && yum clean all
# set locale
RUN yum reinstall -y glibc-common && yum clean all
ENV LANG ja_JP.UTR-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTR-8
RUN unlink /etc/localtime
RUN ln -s /usr/share/zoneinfo/Japan /etc/localtime
# editor install
RUN yum install -y vim && yum clean all
# Postfix install
RUN yum install -y postfix
RUN yum install -y cyrus-sasl cyrus-sasl-plain
RUN yum install -y mailx
RUN yum install -y telnet
# copy config files AND replace config
COPY files/main.cf.org /etc/postfix/main.cf.org
COPY init/sed.sh /etc/postfix/sed.sh
COPY files/sasl_passwd /etc/postfix/sasl_passwd
WORKDIR /etc/postfix
RUN /bin/bash sed.sh
# Create DB
RUN /usr/sbin/postmap /etc/postfix/sasl_passwd
RUN chmod 600 /etc/postfix/sasl_passwd.db
コンフィグファイルテンプレ編集
sed -e "s/{{MYHOSTNAME}}/【ホスト名】/" -e "s/{{MYDOMAIN}}/【ドメイン名】/" -e "s/{{INET_PROTOCOLS}}/ipv4/" main.cf.org > main.cf
[smtp.gmail.com]:587 【アカウント】:【パスワード】
↑はGoogleのアカパス。
イメージビルド/コンテナ起動
# docker build -t labo:postfix .
# docker run -itd -p 587:587 -p 25:25 -p 465:465 --name postfix labo:postfix /bin/bash
postfix起動/メール送信テスト
# docker exec -it postfix /bin/bash
# /sbin/postfix start
# telnet localhost 25
helo 25
mail from:
rcpt to:
data
本文入力
.
quit
Gmailを開いてメールが送信されたことを確認。以上。