2005年03月21日
[Linux] sendmailのSTATTLS対応
インストール済みのsendmailを、STARTTLS対応した。参考にしたのは、sendmailにおけるTLS (FreeBSD PRESS No.6)とSMTP AUTHを試す/sendmail [FreeBSD](fkimura.com)。
0. 方針
- 外部から接続するクライアントは、Sylpheed(Linux)、Outlook(Windows)、QMail3(PocketPC)とする。
- 外部のクライアントからのSMTP認証は、SSL化されていて安全なので、Outlookの標準であるLOGIN認証(パスワードが平文で流れる)を利用する。
1. sendmailがSTARTTLSに対応しているか確認
以下のコマンドで、STARTTLSが表示されれば、sendmailがSTARTTLS対応でコンパイルされている。
# sendmail -d0 < /dev/null
Version 8.12.10
Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7
NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SASL
SCANF STARTTLS TCPWRAPPERS USERDB XDEBUG
============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = turbo7
(canonical domain name) $j = turbo7.kkoba.com
(subdomain name) $m = kkoba.com
(node name) $k = turbo7
========================================================
Recipient names must be specified
2. 鍵の準備
SSL証明書を$29で購入してあるので、これを利用する。自分で作成する場合は、ココを参照。
今回からは、従来から使っていた/usr/local/certsに鍵が置いてあるとする。鍵がroot以外で読めるとsendmailが文句を言うので、アクセス権を変更する。
# chmod -R 600 /usr/local/certs
3. STARTTLS対応のsendmail.cfの作成
既に作成済みのsendmail.mcファイルにSTARTTLS関連の行を追加し、同時に認証をLOGINのみとする。なお、今回はSSLのクライアント証明書を利用しないので、confCACERTには、confSERVER_CERTと同様に公開鍵を指定すれば良い。
define(`confAUTH_MECHANISMS', `LOGIN')dnl TRUST_AUTH_MECH(`LOGIN')dnl define(`confCACERT_PATH', `/usr/local/certs')dnl define(`confCACERT', `confCACERT_PATH/www.kkoba.com.crt')dnl define(`confSERVER_CERT', `confCACERT_PATH/www.kkoba.com.crt')dnl define(`confSERVER_KEY', `confCACERT_PATH/www.kkoba.com.key')dnl
編集が終了したら、sendmail.mcからsendmail.cfを作成し、sendmailを再起動する。
# make sendmail.cf # /etc/init.d/sendmail restart
telnetで、上記設定が反映されているか確認する。
# telnet localhost 25 【入力】 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. 220 turbo7.kkoba.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 22 Mar 2005 23:50:31 +0900 ehlo kkoba.com 【入力】 250-turbo7.kkoba.com Hello localhost.localdomain [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-EXPN 250-VERB 250-8BITMIME 250-SIZE 250-DSN 250-AUTH LOGIN 【LOGIN認証のみ】 250-STARTTLS 【STARTTLS有効】 250-DELIVERBY 250 HELP quit 【入力】 221 2.0.0 turbo7.kkoba.com closing connection Connection closed by foreign host.
4. Sylpheed(Linux)の設定
「設定 - 現在のアカウントの設定 - SSL」で、「SSLセッションの開始にSTARTTLSコマンドを使用」にチェックする。
5. Outlook(Windows)の設定
アカウントの詳細設定の「送信サーバ (SMTP)」で、「このサーバはセキュリティで保護された接続(SSL)が必要」にチェックを入れる。
なお、Norton Antivirusを利用している場合は、標準で「発信メールをスキャン」にチェックが入っている。STARTTLSすると、暗号化されたメールの中身をNorton Antivirusが読めないために、メール送信エラーになる。
対処方法は、「Norton Antivirus - オプション - 電子メール」で、「発信メールをスキャン」のチェックを外すことである。
- 過去にAntiVir Milter for Sendmailをすり抜けたウィルスはない
- 添付ファイルにする可能性があるローカルファイルには、Nortonが効いている
という2つの理由から、この対処方法を受け入れることにした。
6. QMail3(PocketPC)の設定
「Account - Property - Detail」で、「Outgoing Mail」に「STARTTLS」を選択する。
Qmail3は、FrontPage - Q3から入手できる。
7. メールヘッダを確認する
STARTTLSを利用してメールを送信すると、メールヘッダにその旨が記載される。
以下は、desktopというマシンのメールクライアントから<foo@example.com>宛にメールを送信した時の例。verify=NO は、SSLクライアント証明書が提示されなかったことを示す。
Received: from desktop (authenticated bits=0 with LOGIN) by mail.kkoba.com with ESMTP id j2MC7V20004912 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO) for <foo@example.com>; Tue, 22 Mar 2005 21:07:31 +0900
以下は、webmaster@kkoba.com宛のメールを、mail.example.comから受信した時の例。mail.example.comがSTARTTLSに対応していれば、SMTP Server間でもSSLで通信が行われる。verify=FAILは、mail.example.comからmail.kkoba.comに対してSSLクライアント証明書が提示されたが、認証できなかったことを示す。ただし、通信自体はSSLで暗号化されている。
Received: from mail.example.com by mail.kkoba.com with ESMTP id j2OAG920021373 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=FAIL) for <webmaster@kkoba.com>; Tue, 22 Mar 2005 19:16:10 +0900
8. /var/log/maillogを確認する
ログのそれぞれの行の意味は、下記の通り。
- Desktopのメールクライアントから自分のsendmailに対して、STARTTLSでメールを送信。この場合のsendmailはServerとして動作しているので、STARTTLS=serverとなる。
- sendmailが、送信先のメールサーバに、STARTTLSでメールを転送。この場合のsendmailはClientとして動作しているので、STARTTLS=clientとなる (送信先のメールサーバがSTARTTLSに対応している場合のみ)。
- sendmailが、受信元のメールサーバからSTARTTLSでメールを受信。この場合のsendmailはServerとして動作しているので、STARTTLS=serverとなる (受信元のメールサーバがSTARTTLSに対応している場合のみ)。
Mar 22 01:54:26 mail.kkoba.com sm-mta[30933]: STARTTLS=server, relay=desktop.kkoba.com [aaa.bbb.ccc.ddd], version=TLSv1/SSLv3, verify=NO, cipher=RC4-MD5, bits=128/128 Mar 22 01:54:36 mail.kkoba.com sm-mta[30951]: STARTTLS=client, relay=smtp.example.com., version=TLSv1/SSLv3, verify=FAIL, cipher=EDH-RSA-DES-CBC3-SHA, bits=168/168 Mar 22 16:59:46 mail.kkoba.com sm-mta[30998]: STARTTLS=server, relay=smtp.example.com [eee.fff.ggg.hhh], version=TLSv1/SSLv3, verify=FAIL, cipher=EDH-RSA-DES-CBC3-SHA, bits=168/168
投稿者 かつ : 2005年03月21日 00:42
この記事のトラックバックURL
トラックバック一覧 (0件)
コメント一覧 (0件)
新規にコメントする
| 年間カレンダー | |||||||||||||
| 2007 年 |
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 年 |
|
||||||||||||
| 2005 年 |
|
||||||||||||
| 2004 年 |
|
||||||||||||
| 2003 年 |
|
||||||||||||
| 2002 年 |
|
||||||||||||
| 2001 年 |
|
||||||||||||
| 2005年03月 | ||||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | 31 | ||