postfixで快適smtpサーバ構築

設定が非常にややこしいsendmailからqmail, postfix, exim4など多くの便利なMTAなどが登場しています。

しかしながら、Google Appsでのメール利用など単純にMXレコードを書くだけで近年は安定したメール環境が手に入るようになり、自前でSMTPを立てることも無くなって来ました。あまり利用しないSMTPのリレーの設定の間違いや、DNSのMXレコードの追加などややこしい箇所も幾つかありSMTPは他人任せが一般的になってきているように思います。実際わたくしもその一人です。

ただ、WEBサービスの中でメルマガなどで自前のSMTPを利用してメール送信、または写真共有サービスなどでメールからWEBに投稿というシーンも少なくないように思います。そんな時に活躍するのがこの記事です。

ここではメールMTAであるPostfixの構築をDNS(bind9)の設定も交えてメモしておきます。


post@pic.localhost.comというメールアドレスを運用することを仮定して書いてあります。
サーバはpostfix, bind9含め1台のみです。

1.DNS(bind9)のゾーンファイル, MXレコードの追加

pic              IN      A       0.0.0.0
pic              IN      MX 10    pic.localhost.com.
# /etc/init.d/bind9 restart

MXレコード先に書くことが多いのですが、サブドメインpicを解決するために
Aレコードを先に書いておきました。

MXレコードがしっかりと反映されているか確認します。

# dig pic.localhost.com mx
pic.localhost.com	IN	MX	
preference:	10
exchange:	pic.localhost.com
3600s	(1h)

などど帰ってくれば大丈夫でしょう。

2.Postfixのインストールと設定

# apt-get update
# apt-get upgrade
# apt-get install postfix

Postfixの設定は/etc/postfix/main.cfで行います。

# cd /etc/postfix
# vim main.cf
/etc/main.cf excerpt:
myorigin = /etc/mailname # ファイルが存在しているか確認
mydestination = pic.localhost.com, localhost # 自分のドメインに変更(sendmailなどのfromはここのドメインを受け付ける)
inet_interfaces = all # ここはlocalhostにすると外部からの送信はできない配信専用のSMTPになります
# mailbox_command = procmail -a "$EXTENSION" # Maildir利用のためコメントアウト
# mailbox_size_limit = 0 # Maildir利用のためコメントアウト
home_mailbox = Maildir/ # Maildir利用のため追加
virtual_alias_domains = pic.localhost.com # 今後複数ドメインで運用のため追加
virtual_alias_maps = hash:/etc/postfix/virtual # 今後複数ドメインで運用のため追加
/etc/mailnameの書き換え:
# echo 'pic.localhost.com' > /etc/mailname
/etc/postfix/virtualの設定:
# vim /etc/postfix/virtual
/etc/postfix/virtual excerpt:

メールアドレス[スペース]ローカルユーザ名 の順

post@pic.localhost.com post

もし、postというユーザが存在していない場合はpostユーザを追加

# adduser post
virtualファイルをpostmapします(virtual.dbを作成)
# postmap /etc/postfix/virtual

最後にPostfixの起動

# /etc/init.d/postfix start

mboxはmailコマンドで読めたのですがMaildirはmuttを使ってメールを読みます。
skelに書いとけばいいんだけど初期設定がちょっとめんどくさい。

# vim ~/.muttrc
~/.muttrc excerpt:

私はvimを使うのでEditorはvimに設定してあります

set from="post@pic.localhost.com"
set realname="Photo Service"
set mbox_type=Maildir
set spoolfile="~/Maildir"
set folder="~/Mail"
set mbox="+mbox"
set editor='vim + -c "set textwidth=72" -c "set wrap" -c "set nocp" -c "?^$"'


参考:
http://d.hatena.ne.jp/Kmusiclife/20101116/1289878358
http://www.postfix.org/documentation.html
http://www.postfix.org/
http://www.mutt.org/
http://www.ietf.org/rfc/rfc2821.txt