Dockerfile
FROM ubuntu:20.04
RUN apt update && apt upgrade -y
# postfix install
RUN DEBIAN_FRONTEND=noninteractive apt install postfix -y
# SMTPにはSMTP AUTHが必要
# SMTP AUTHの為のSASLにはCyrus SaslとCyrus IAMPを使う
RUN apt install sasl2-bin -y
RUN DEBIAN_FRONTEND=noninteractive apt install cyrus-imapd -y
# コンテナ起動のスクリプト
COPY ./entrypoint.sh /
ENTRYPOINT ["sh", "/entrypoint.sh"]
docker-compose.yml
version: '3.3'
services:
docker-ubuntu-postfix-example:
build:
context: ./
dockerfile: Dockerfile
image: docker-ubuntu-postfix-example-image:latest
container_name: docker-ubuntu-postfix-example-container
volumes:
# Postfixの設定をマウントする
- type: bind
source: ./configs/main.cf
target: /etc/postfix/main.cf
# SASL認証のパスワードをマウントする
- type: bind
source: ./configs/sasl_passwd
target: /etc/postfix/sasl_passwd
entrypoint.sh
#!/bin/bash
# postfix起動
postfix start
# Postfixは/var/spool/postfixにchrootするので、
# /etc/resolv.confではなく/var/spool/postfix/etc/resolv.confを見に行く。
cp /etc/resolv.conf /var/spool/postfix/etc/resolv.conf
# SASL認証用テーブル作成
chown root:root /tec/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd
# postfixの設定を反映させる
postfix reload
# コンテナの起動を維持
tail -f /dev/null
configs/main.cf
L postfixを使う場合
# ログの出力設定
mainlog_file = /var/log/mail.log
# SMTPリレーの設定
relayhost = [smtp.mailtrap.io]:2525
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = plain
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
configs/sasl_passwd
-> postfixのcredential情報
<メールサーバのFQDN>]:587 <ユーザ名>:<パスワード> #★
$ sudo docker-compose build –no-cache
$ sudo docker-compose up -d
$ sudo docker exec -it docker-ubuntu-postfix-example-container /bin/bash
root@7b16a3765167:/# sendmail your-email@example.com
From:your-email@example.com
To:your-email@example.com
Subject:Hello World
Hello World
.