Rails の Devise の試験でダミーのメールサーバを作る必要がありそうなので、Postfix で特定ドメイン宛のメールをテスト用の1ユーザで受信するように設定してみた。
postfixはすでにインストール済みで、設定段階からのメモ
CentOS7 でやったので、Ubuntu とかだと若干ちがうかも。
Postfix でやること
example.com 宛のメールを、サーバの user01 ユーザですべて受信する。メールの保存は Maildir 形式で保存することとする。
設定内容
main.cf および virtual には以下の設定を行います。
main.cf
- home_mailbox をコメントアウトして Maildir/ を指定
- inet_interfaces の値に all を指定
- inet_protocols の値に ipv4 を指定
- local_recipient_maps を有効化
- luser_relay に user01 にメールを集約するよう指定
- virtual_alias_domains に example.com を指定
- virtual_maps に /etc/postfix/virtual を指定
virtual
- /etc/postfix/virtual へのバーチャルドメインの追加
設定結果
/etc/postfix/main.cf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# The home_mailbox parameter specifies the optional pathname of a # mailbox file relative to a user’s home directory. The default # mailbox file is /var/spool/mail/user or /var/mail/user. Specify # "Maildir/" for qmail-style delivery (the / is required). # #home_mailbox = Mailbox home_mailbox = Maildir/ : # # Note: you need to stop/start Postfix when this parameter changes. # inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost #inet_interfaces = localhost # Enable IPv4, and IPv6 if supported inet_protocols = ipv4 : # The right-hand side of the lookup tables is conveniently ignored. # In the left-hand side, specify a bare username, an @domain.tld # wild-card, or specify a user@domain.tld address. # #local_recipient_maps = unix:passwd.byname $alias_maps #local_recipient_maps = proxy:unix:passwd.byname $alias_maps local_recipient_maps = : # #luser_relay = $user@other.host #luser_relay = $local@other.host #luser_relay = admin+$local luser_relay = user01 : # These destinations do not need to be listed in $relay_domains. virtual_alias_domains = example.com virtual_maps = hash:/etc/postfix/virtual : |
/etc/postfix/virtual
1 2 |
example.com anything @example.com user01 |
設定の反映
1 2 |
$ sudo postmap /etc/postfix/virtual $ sudo systemctl restart postfix |