目的
postfixにリモートホストからメールを送信できるようにしたいが、最低限の認証はかけておきたい
前提
- ローカルホストからメール送信できる設定までは完了している
- ここではdebianを想定している
- postfixとsasl2_bin はインストール済み
手順
1. /etc/postfix/main.cf を編集
以下を追加
smtpd_sasl_auth_enabled = yes
2. /etc/postfix/sasl/smtpd.conf を作成
以下の設定でpostfix自身がsasldbを見るようになる
pwcheck_method: auxprop
3. sasldb2をつくる
debianでいれたpostfixはchrootが有効になっているため、/var/spool/postfix以下にsasldb2は設置する必要がある
$ sudo saslpasswd2 -f /var/spool/postfix/etc/sasldb2 -c -u `/usr/sbin/postconf -h myhostname` <username>
$ sudo chgrp postfix /var/spool/postfix/etc/sasldb2
4. restart postfix
sudo /etc/init.d/postfix restart
5. 確認
telnetでsmtpの認証を確認する。
まずsaslpasswd2で入力したパスワードとユーザ名からbase64エンコードした認証用文字列をつくる必要がある
以下はユーザ名test, パスワード testpassとした場合のもの
$ perl -MMIME::Base64 -e 'printf encode_base64("test\0test\0testpass")'
dGVzdAB0ZXN0AHRlc3RwYXNz
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 debian.local ESMTP Postfix (Debian/GNU)
AUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNz
235 2.7.0 Authentication successful
successfulとでればsasl認証はOK
備考
- mynetworksは適切に設定しておくように
- このままだと暗号化はされないので、basic認証と同程度のセキュリティであることに注意