|
14-4.syrus-sasl |
2007年5月26日 |
送信メールサーバーの認証用としてまずSMTP-Auth方式を設定。 cyrus-saslという認証プログラムを導入します。 |
改造とインストール
$apt-get source cyrus-sasl でソースファイルをもってきます。
rpm/SOURCES/cyrus-sasl-2.1.18.tar.gzを一旦解凍。
$cd rpm/SOURCES
$tar zxfv cyrus-sasl-2.1.18.tar.gz
解凍されてできたフォルダcyrus-sasl-2.1.18内のlib/checkpw.cを編集。
cyrus-saslはusername@domain.tldの形のIDを@のところでユーザ名とドメイン名に分けてしまうためドメイン名込みの形での認証ができません。"-r"オプションでうまくいくちう話もありましたがだめでしたので、これをできるようにします。
575行目から
オリジナル:
/* Split out username/realm if necessary */
if(strrchr(userid,'@') != NULL) {
char *rtmp;
if(_sasl_strdup(userid, &freeme, NULL) != SASL_OK)
goto fail;
userid = freeme;
rtmp = strrchr(userid,'@');
*rtmp = '\0';
user_realm = rtmp + 1;
}
修正は、*rtmp = '\0'; をコメントアウトするだけ
修正後:
/* Split out username/realm if necessary */
if(strrchr(userid,'@') != NULL) {
char *rtmp;
if(_sasl_strdup(userid, &freeme, NULL) != SASL_OK)
goto fail;
userid = freeme;
rtmp = strrchr(userid,'@');
// *rtmp = '\0';
user_realm = rtmp + 1;
}
古い cyrus-sasl-2.1.18.tar.gz を捨てて、再度圧縮
$tar zcfv cyrus-sasl-2.1.18.tar.gz ./cyrus-sasl-2.1.18
mysqlを使えるようにするため、SPECS/cyrus-sasl-vl.specファイルを編集
version 2.1.18の%configure に以下を追加
--enable-mysql --with-mysql=/usr/lib/mysql
但し前回はmysqlとうまく繋がらずあまり意味はなかったのですが、今回はどうだろう。
再度 rpm を作成
$cd ../SPECS/
$rpmbuild -ba cyrus-sasl-vl.spec
やたらと WARNING が出ます。コンパイルにけっこう時間がかかります。
rpmができたらインストール
$cd ../RPMS/i386
$su
#rpm -Uvh --force *.rpm
インストールしたパッケージはバージョンの固定をしておきます。
設定
mysqlテーブルを直接参照する方式はやっぱりだめでした。
/usr/lib/sasl2/smtpd.conf を作成して
#パスワードチェックをsaslauthdが実施
pwcheck_method: saslauthd
#パスワード認証方式
mech_list: plain login
#その他
saslauthd_path: /var/run/saslauthd/mux
log_level: 3
を記載
/etc/sysconfig/にsaslauthdを作成して以下記入
SOCKETDIR=/var/run/saslauthd
MECH=rimap
FLAGS="-O localhost"
saslauthdの起動設定と確認
#chkconfig saslauthd on (丁寧にやるなら #chkconfig --level 2345 saslauthd on)
#service saslauthd startでOKを確認
postfix設定
#認証(cyrus-saslによるSMTP Auth)に必要な設定
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_application_name = smtpd
/etc/postfix/main.cf に
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated, ....追加
check_recipient_access hash:/etc/postfix/access,
.....
postfixを再起動
#service postfox restart
不正中継テスト
ホスト名(メールサーバー名)を打ち込み[check]!
--------
第三者中継テスト
第三者中継テストのためmail.iroribata.netに接続しています...
<<< 220 mail.iroribata.net ESMTP Postfix
>>> HELO rep.rbl.jp
<<< 250 mail.iroribata.net
中継テスト その0
>>> RSET
<<< 250 Ok
>>> MAIL FROM:
<<< 250 Ok
>>> RCPT TO:
<<< 450
relay NOT accepted!!
中継テスト その1
......
......
第三者中継テストの結果
全てのテストが行われました, no relays accepted.
--------
全部で20通りのテストが行われます。
すべて relay NOT accepted!! でパス!
これを確認してやっとメールサーバーを公開できます。