2013年12月31日

Postfix+Cyrus SASL で SMTP 認証

SMTPサーバーの認証をやらざるをえなくなり、SASL を導入した。
Cyrus SASL はこれまでにも何度か試したけれど、いつも何やら難しそうで途中で放棄していた。
今回は、なんとかやりおおせた。。。

使用した環境は以下のとおり:
OS: CentOS release 6.4 (Final)

1. Cyrus SASL のインストールと設定

SASL ではさまざまな認証機構を選択できるが、あまり複雑なことをやるとハマりそうなので Linux のパスワードファイル /etc/shadow での認証を採用した。
/etc/shadow での認証は、saslauthd で実現できる。
saslauthd は、CentOS の RPM パッケージ cyrus-sasl に含まれている。

PLAIN 認証機構のパッケージ cyrus-sasl-plain もインストールが必要。
# yum install cyrus-sasl cyrus-sasl-plain
saslauthd を実行する前に、/etc/sysconfig/saslauthd ファイルの起動オプションを設定して /etc/shadow での認証を行うようにする。
MECH=shadow
起動してみる。
# service saslauthd start
saslauthd での認証がうまくいくかどうかは、testsaslauthd コマンドで確認できる。
# testsaslauthd -u ユーザ名 -p パスワード
0: OK "Success." と表示されれば成功。

Postfix の SMTP 認証のために saslauthd は起動させておく必要がある。
chkconfig で on に設定しておこう。
# chkconfig saslauthd on

2. Postfix の設定

Postfix の SASL 認証は、SASL ライブラリーを経由して行っている。
SASL ライブラリーの設定ファイル /etc/sasl2/smtpd.conf を以下のように設定する。
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

Postfix 本体の設定を以下のようにする。
(設定項目が存在しなければ追加)
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
最後の設定は、リレーを許可するためのもの。
なお、Cyrus SASL ライブラリーは設定ファイルの検索パスから「smtpd_sasl_path の設定値+.conf」というファイル名のファイルを探し出してそれを読み込むので、認証がうまくいかない場合は前述の /etc/sasl2/smtpd.conf ファイルのファイル名と smtpd_sasl_path の設定値が一致しているかどうか確認するとよい。

/etc/postfix/master.cfg ファイルで、-o smtpd_sasl_auth_enable=yes-o smtpd_client_restrictions=permit_sasl_authenticated,reject オプションを有効にする。
smtp inet n - n - - smtpd
#submission inet n - n - - smtpd
# -o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING

Postfix の設定リロードを行って完了。
# service postfix reload
posted by K/I at 18:13 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする

SETI@home/BOINC をコマンドラインで実行する (Linux)・改

しばらく貢献を怠っていた SETI@home に久しぶりに参加しようと思い、以前書いた記事「SETI@home/BOINC をコマンドラインで実行する (Linux)」を読み返したものの、さすがに古すぎてほとんど役に立たず。
改めて調べてみた。

使用したOSは CentOS release 6.4 (Final)。
現在は RPM パッケージが用意されており、rc ファイルも完備されているので操作が楽になっている。

1. BOINCクライアントのインストール

rpm パッケージが用意されているので、yum 等でインストールする。
# yum install boinc-client
インストールが完了したら boinc-client を起動する。
# service boinc-client start

2. SETI@home のプロジェクト登録

まずは、SETI@home のアカウントキーを取得する必要がある。
SETI@home にアカウントを持っている場合には、次のコマンドでアカウントキーを取得できる。
# boinccmd --lookup_account http://setiathome.berkeley.edu/ \
メールアドレス パスワード
まだアカウントを作っていない場合は、次のコマンドを実行する。
# boinccmd --create_account http://setiathome.berkeley.edu/ \
メールアドレス パスワード アカウント名
アカウントキーを取得したら、BOINC デーモンに SETI@home を登録する。
# boinccmd --project_attach http://setiathome.berkeley.edu/ アカウントキー
ステータスは、
# boinccmd --get_results
で確認できる。
posted by K/I at 12:14 | 東京 ☀ | Comment(0) | TrackBack(0) | 技術メモ | このブログの読者になる | 更新情報をチェックする