www.kkoba.com  » kkobaのblog

2005年03月21日

[Linux] sendmailのSTATTLS対応

インストール済みのsendmailを、STARTTLS対応した。参考にしたのは、sendmailにおけるTLS (FreeBSD PRESS No.6)SMTP AUTHを試す/sendmail [FreeBSD](fkimura.com)

0. 方針

  1. 外部から接続するクライアントは、Sylpheed(Linux)、Outlook(Windows)、QMail3(PocketPC)とする。
  2. 外部のクライアントからの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)の設定

sylpheed_tls.gif

「設定 - 現在のアカウントの設定 - SSL」で、「SSLセッションの開始にSTARTTLSコマンドを使用」にチェックする。

5. Outlook(Windows)の設定

outlook_tls.gif

アカウントの詳細設定の「送信サーバ (SMTP)」で、「このサーバはセキュリティで保護された接続(SSL)が必要」にチェックを入れる。

norton.gif

なお、Norton Antivirusを利用している場合は、標準で「発信メールをスキャン」にチェックが入っている。STARTTLSすると、暗号化されたメールの中身をNorton Antivirusが読めないために、メール送信エラーになる。

対処方法は、「Norton Antivirus - オプション - 電子メール」で、「発信メールをスキャン」のチェックを外すことである。

  1. 過去にAntiVir Milter for Sendmailをすり抜けたウィルスはない
  2. 添付ファイルにする可能性があるローカルファイルには、Nortonが効いている

という2つの理由から、この対処方法を受け入れることにした。

6. QMail3(PocketPC)の設定

qmail_tls.gif

「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を確認する

ログのそれぞれの行の意味は、下記の通り。

  1. Desktopのメールクライアントから自分のsendmailに対して、STARTTLSでメールを送信。この場合のsendmailはServerとして動作しているので、STARTTLS=serverとなる。
  2. sendmailが、送信先のメールサーバに、STARTTLSでメールを転送。この場合のsendmailはClientとして動作しているので、STARTTLS=clientとなる (送信先のメールサーバがSTARTTLSに対応している場合のみ)。
  3. 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
12
 
11
1
10
1
09
1
08
 
07
 
06
 
05
 
04
3
03
7
02
3
01
4
2006
12
1
11
1
10
1
09
1
08
1
07
1
06
1
05
2
04
1
03
1
02
1
01
1
2005
12
1
11
1
10
4
09
2
08
1
07
2
06
3
05
7
04
4
03
8
02
6
01
10
2004
12
8
11
14
10
10
09
20
08
12
07
2
06
4
05
2
04
1
03
1
02
1
01
1
2003
12
1
11
1
10
1
09
1
08
1
07
1
06
2
05
2
04
3
03
3
02
7
01
3
2002
12
5
11
3
10
3
09
4
08
7
07
6
06
10
05
7
04
4
03
4
02
8
01
8
2001
12
6
11
12
10
18
09
6
08
 
07
 
06
 
05
 
04
 
03
 
02
 
01
 
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    

サイト内の検索

このBlogのライセンス