|
Contributed at: 2004/11/23 (Tue) 00:09
|
FedoraCore 付属の Sendmail パッケージは sendmail.cf を適切に調整するだけで SMTPS(ポート 465)の暗号化されたメール送信や、SMTP 認証(CRAM-MD5 による暗号化)に対応することが出来ます。以下作業検証時の手順です。検証用の MUA(メーラーのこと)は Becky! で動作確認を行いました。
設定対象ファイルは sendmail.mc です。関連する箇所のコメントを外したり、文字を追加します。まず、48, 49 行目のコメントを解除します。『 dnl 』がコメントに値しますので、『 dnl 』の記述を消します。
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
56〜59行目に賭けてもコメントを外します。
define(`confCACERT_PATH',`/usr/share/ssl/certs')
define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')
define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')
105 行目を次のように書き換えます。SMTP ポートとして 25 番を使うという指定です。Addr=127.0.0.1 の記述があると外部からポート 25 に接続できなくなるので、消しておきます。
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
123 行目のコメントを外します。SMTPS としてポート 465 を使うという指定です。
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
この sendmail.mc ファイルを元に sendmail.cf ファイルを作成します。
作業前には念のためにバックアップを取っておくとよいでしょう(もし間違って動作しなくなっても、元の sendmail.cf に差し替えて sendmail の再起動を行うことで設定が反映されるからです。
バックアップ例:
# cp -p /etc/mail/senndmail.cf /etc/mail/sendmail.cf.org
新しい sendmail.cf を作成するには、今編集した sendmail.mc というファイルを m4 というツールを使って変換します。
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
次に、証明書の作成を行います。本来はベリサイン社などから認証をうけた正式なものを使えば安全なのですが、通信は偽装されていない安全な経路上であると信頼できるものとして、ダミーのの SSL 証明書を作ります。sendmail.pem ファイルを作成します。国名やドメイン名などの入力を行います。以下は入力例です。
# cd /usr/share/ssl/certs; make sendmail.pem
umask 77 ; \
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
/usr/bin/openssl req -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 ; \
cat $PEM1 > sendmail.pem ; \
echo "" >> sendmail.pem ; \
cat $PEM2 >> sendmail.pem ; \
rm -f $PEM1 $PEM2
Generating a 1024 bit RSA private key
.....................................++++++
.........................................++++++
writing new private key to '/tmp/openssl.ey4626'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP←国名、ここは JP = Japan でしょう
State or Province Name (full name) [Berkshire]:Toyama←都道府県です。私は富山県なので Toyama と入れました。
Locality Name (eg, city) [Newbury]:Namerikawa-Shi←市区町村名です。滑川市と入力しています。
Organization Name (eg, company) [My Company Ltd]:pocketstudio.jp←組織名です。何でも良いです
Organizational Unit Name (eg, section) []:←部署名です。空白可です。
Common Name (eg, your name or your server's hostname) []:pocketstudio.jp←ここにホスト名を記述します。
Email Address []:zem@pocketstudio.jp←メールアドレスです。空白可です。
これで下準備は終わりました。最後に sendmail の再起動を行って完了です。
# /etc/init.d/sendmail restart
sendmail を停止中: [ OK ]
sm-client を停止中: [ OK ]
sendmail を起動中: [ OK ]
sm-client を起動中: [ OK ]
これでサーバ側の準備は終わりました。
SMTP AUTH には SASL 認証を使います。LOGIN 認証(linux マシンの ID とパスワードによる認証)ではなく CRAM-MD5 認証を行いたい場合は追加設定が必要です。
コマンドは【 /usr/sbin/saslpasswd2 -u ホスト名 -c ID名 】の形式で記述します。-u のあとのホスト名は sendmail が認識している自分自身のホスト名でなくてはいけません。
以下は localhost.localdomain のサーバで zem というユーザに対してパスワードを設定する例です。
# /usr/sbin/saslpasswd2 -u localhost.localdomain zem
Password:画面に表示されませんが、パスワード入力です
Again (for verification):もう一度パスワード入力です
これでサーバ側の準備は終わりました。
以下はMUA が Becky! の場合の動作確認方法です。
Becky! のメニューにある【 ツール(T) 】→【 メールボックスの設定(M)… 】で設定画面を開きます。
『 基本設定 』のタブ(見出し)では【 SMTPS 】にチェックを入れます。『ポート番号をSSL標準の 465 に変更しますか?』と聞いてきますので【 はい(Y) 】を選びます。
『 詳細 』のタブ(見出し) では、まず、『 SSL/TLS 関連』の項目の【 証明書を検証しない(S) 】のチェックを入れます。認証方法は【 デフォルト 】にします。
【 SMTP 認証 】にチェックを入れると、送信時に SMTP 認証を行います。,br>
【 LOGIN 】にチェックを入れた場合は Linux サーバのログイン ID とパスワードで認証します。平文での認証です。せっかく使えるので、暗号化できる CRAM-MD5 認証を使いましょう。ここでのユーザ ID とパスワードは先ほど saslpasswd2 コマンドによって指定した ID とパスワードです。ログイン用とは違うので混同しないようにしておく必要があります。
エラー対策一覧
【reject=550 5.7.1 … Relaying denied. Proper authentication required.】このメッセージがメールソフト(MUA)に表示された場合、何らかの方法で認証が失敗しています。失敗を確認するには /var/log/maillog もしくは /var/log/messages を確認します。
- 「sion sendmail[4688]: incorrect digest response」
この場合は純粋にログイン認証に失敗しています。saslpasswd2 コマンドで指定されたパスワードが間違いないかどうか、確認することをおすすめします。
- 「sion sendmail[4299]: no secret in database」
/etc/sasldb2 ファイル内に指定されている ID 情報が無いときに出ます。saslpasswd2 コマンドの引数 -u で指定されたドメインが適切かどうか、再確認する必要があります。
一般的なプロバイダでは POP Before SMTP 認証(メール受信による認証を行うことで、サーバの正しい利用者かどうか判別し、一時的に送信を許可する方法)がとられていると思いますが、今後は SMTP AUTH 認証も比較的設定が簡単な事から普及していくのではないかと思います。
[分類 /linux/FedoraCore3 ]
固定リンク
|