postfixで外部メールサーバ経由でメール送信

全部のサーバにlogwatchいれたとか、
redmine建てたけどとか、
それぞれのサーバでメールサーバ環境作るのはちょっとないのでメール送信は外部のメールサーバに任せる方法をめも。

例はgmailだけど、別に自分で用意したメールサーバとかでもsmtpサーバのhostとport変えれば大丈夫

postfix設定

まず/etc/postfix/main.cfに

#vim /etc/postfix/main.cf
 
myhostname = host.mydomain
mydomain = mydomain
myorigin = $mydomain
inet_interfaces = localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
 
 relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options =
smtp_sasl_mechanism_filter = plain
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt

自分の環境だとrelayhostの前の空白入れないとなぜか動かなかった。なんで?

パスワードとアカウントの設定

main.cfのsmtp_sasl_password_mapsで指定したファイルにアカウントとパスワードを設定します。
【リレー先メールサーバのFQDN アカウント名:パスワード】と記述します。
gmailの場合、アカウント名は@gmail.comまで含めます。

#vim /etc/postfix/sasl_passwd
 
smtp.gmail.com example@gmail.com:パスワード

次にpostmapをつかってhash化します。

# postmap /etc/postfix/sasl_passwd

そしてpostfixの再起動

# /etc/init.d/postfix restart

確認

送れるかどうかテストをmailコマンドで

$ mail 【自分の持ってるメールアドレス】
Subject: test mail
.
Null message body; hope that's ok

最後の.でメール本文終了の意味になるから必須。

/var/log/maillogをみてstatus=sentとか出てたらオッケー