倉金家ホームページ趣味の部屋/サーバー構築メモ/メールサーバー
| ||||||
改造とインストール以前よりSMTP認証用に少し改造した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 インストールしたパッケージはバージョンの固定をしておきます。 | ||||||
設定今回も認証方式としてrimapというのを使用します。
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設定/etc/postfix/main.cfに以下を設定します
#認証(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 | ||||||
不正中継テストhttp://www.rbl.jp/svcheck.php でメールサーバーが不正中継をしないかどうかのテストを行ってくれます。
ホスト名(メールサーバー名)を打ち込み[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!! でパス! これを確認してやっとメールサーバーを公開できます。 | ||||||