sendmailであるとかqmailとかと言ったSMTPDがあるけど、最近利用しているのはpostfixだ。
開発環境で、全ての送信メール内容を確認したいという場面があるけど、postfixだとこれが簡単にできる。
yum install postfix
yum install cyrus-sasl
ついでなのでSMTP Authも導入するため、Cyrus-saslも導入しておく。
>>/etc/postfix/main.cf
myhostname = wp.xn--ockc3f5a.com #ホスト名を設定
mydomain = xn--ockc3f5a.com #ドメインを設定
mydestination = wp.xn--ockc3f5a.com, xn--ockc3f5a.com, $myhostname, localhost.$mydomain, localhost #このホストが目的地であるドメインを設定
mynetworks = 127.0.0.0/8, 210.170.x.y #信頼するネットワークを設定(このアドレスから送信されたメールはリレー許可される)
home_mailbox = Maildir/ #メールをデフォルトのDovecotの位置に保管する
always_bcc = catch_all@wp.xn--ockc3f5a.com #これで全てのメールのBCCが送信される
smtpd_sasl_auth_enable = yes #SMTP Authを使用する
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,permit_auth_destination,reject_unauth_destination #メールの許可設定;信頼されるネットワーク、SMTP Authで認証されたユーザ、認証された宛先を許可し、認証されない宛先を拒否する
broken_sasl_auth_clients = yes #非標準のSMTP Authサポート通知を有効にする
smtpd_sasl_security_options = noanonymous #匿名ユーザからのメールを拒否する
あとは、開発サーバで外にメールを送りたくない場合、
default_transport = local
この設定をすると、a@yahoo.co.jp宛でもb@microsoft.com宛でも、a@localhostやb@localhostに配送しようとする(つまり、外へのメール送信が出来なくなる) そこで、
luser_relay =catch_all
でキャッチオールしてしまえばほとんどのメールを収集できる(存在するユーザ名宛のメールはそのユーザに配信される)
しかし、Postfixは不明なユーザ宛メールを拒否しようとするので
local_recipient_maps =
の設定でその拒否を解除する。
あとはサービス設定と起動
/sbin/chkconfig sendmail off
/sbin/chkconfig –add postfix
/etc/init.d/sendmail stop
/etc/init.d/postfix start
こんな感じで、簡単な設定で色々使える。
(604)