ローカルの/var/mailにたまり続ける日々のシステムレポートを何とかすべく、色々考えた。結論としてはPostfixに行き着いたが、途中ssmtpというのにも手を出した。
ssmtpは送信専用のMTAでローカルではsendmailのふりをしてくれる。外のSMTPサーバを使って配送してくれて、From:フィールドの置き換えとか、root(正確にはuid 1000未満のユーザ)宛のメールを特定のアドレスに飛ばしてくれるので、毎日のroot宛メールをさばくにはちょうどいい。
というわけで、色々試してみて、動作的にもいい感じだったのだけど、一般ユーザ(uid 1000以上のユーザ)宛は宛先を書き換えてくれず、やってもドメイン名をつけるだけという動きで、使い物にならず。
あと、smtpsのパスワードを設定ファイルに平文で書くのも違和感あり。
パスワードは少々我慢したとして、もう少し粘ればTo:フィールドのアドレス書き換えくらいできそうな気もしたけど、設定項目が少なく、断念してPostfixに手を出した。
ssmtpと同じく、送信専用にするのはこんな感じの設定でOK。
myhostname = toby.localdomain
mydomain = localdomain
myorigin = $myhostname
inet_interfaces = $myhostname, localhost
unknown_local_recipient_reject_code = 550
mynetworks_style = host
# relay setting
relayhost = [aperire.sakura.ne.jp]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
inet_interfacesをローカル限定にするのと、relayhostを設定するのがポイントなのかな。今回は、relayhostとして日記のサーバのsmtps(STARTTLS)を使用するようにsasl_passwdにアカウントとパスワード等を用意。
そして、From:の書き換えは以下の行を同じくmain.cfに追加し、
# rewrite sender address for relayhost
sender_canonical_maps = hash:/usr/local/etc/postfix/sender_canonical
sender_canonicalというファイルに、<user名> <Fromアドレス>を羅列すればOK。
最後に、aliasesに各ユーザ宛の転送先をsendmailと同様に記載して、newaliasesを実行。
portsで入れた時にゴニョゴニョ言われたrc.confやperiodic.confに追記する内容等々を書きこんでおしまい。
思ったよりサクッと動いたので、もっと早くやっておけばよかったと思った。