FreeBSDから外部にメールを出す

FreeBSDからISPのメールサーバを中継してインターネットにメールを送信します。
まずtelnet ISP 25で接続したところ、ESMTP使ってねとお達しがありました。saslが必要になるのでもういっそのことPostfixも入れてしまいます。

インストール

両方ともportsから入れることができます。PostfixはTSLとSASLのオプションを有効にして構築します。mailer.confを作動させていいか聞かれるのでyと答えておきました。

Would you like to activate Postfix in /etc/mail/mailer.conf [n]? Y

/etc/rc.confでsendmailをNOに、postfixをYESに設定します。

# echo 'sendmail_enable="NO"' >> /etc/rc.conf
# echo 'postfix_enable="YES"' >> /etc/rc.conf

一方で、もうsendmailは使わないので再構築時にsendmailが作られないように/etc/make.confに一行継ぎ足しておきます。

# echo 'NO_SENDMAIL= true' >> /etc/maik.conf

SMTP-AUTHの設定

/usr/local/etc/postfix/main.cfに以下を書き加えます。myhostnameやmydomainはISPのメールサーバが名前解決できないとメールが弾かれますのでDDNSでも指定しておきます。

# -- write by @nawolets --
myhostname = なんちゃら.dyndns.org
mydomain = なんちゃら.dyndns.org
relayhost = [ISPのメールサーバ]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/usr/local/etc/postfix/isp_passwd
#smtp_sasl_security_option = noanonymous
smtp_sasl_security_option = 
smtp_sasl_mechanism_filter = plain, login, cram-md5

isp_passwdファイルを用意し、DB化します。

# echo 'ISPのメールサーバ ユーザー名:パスワード' > /usr/local/etc/postfix/isp_passwd
# chown root:mail /usr/local/etc/postfix/isp_passwd
# chmod 640 /usr/local/etc/postfix/isp_passwd
# postmap /usr/local/etc/postfix/isp_passwd
# file /usr/local/etc/postfix/isp_passwd.db
/usr/local/etc/postfix/isp_passwd.db: Berkeley DB 1.85 (Hash, version 2, native byte-order)