« 映画:吉田喜重「煉獄エロイカ」(1970/日) / ニセ天然系ギャルのような / | Top | ジャン・マリー・ギュスターヴ・ル・クレジオ 『歌の祭り』 »

2008年11月13日

●postfix 2.5.5 でのSMTP/TLS @OpenSolaris

以前のエントリー「postfix 2.5.5 でのCryus-SASLでのSMTP-AUTH @OpenSolaris」でCyrus-SMTPを使ったSMTP-AUTHを実装したPostfixのビルド方法を書いたけど、更にそれにSMTP/TLSを実装する方法を書いてみる。

このSMTP/TLSなる技術は、本来ならSMTPの他ホストへのリレーにユーザー認証を取りいれ、更にその認証からメール送信までの経路をSSLで暗号化するということでセキュリティーを向上させようという趣旨である。とはいっても、実際通常の使い方をする分には通信経路の暗号化は必須ではない。

自宅サーバーでメールサーバーを運用していると、自宅サーバーから送信したメールが問答無用でスパムメール扱いされる事が多いのは本当に腹立たしい。
これを自宅のISPのSMTPにリレーしてもらうには「Outbound Port25 Blocking」なる技術もあるにはあるけど、私のように自宅ISPにSMTPリレーしてもらえない状況の人もいる。(WilcomADSLでオプション扱いのメール契約していないなど。)

という場合、外部のSMTPを使う事になるわけやけど、一番てっとりばやくスパム扱いされにくく安心出来そうなSMTPと言えばGmailが妥当なところであろう。
しかし、GmailはタダのSMTP-AUTHではなくTLSでのAUTHを要求してくるので、これに対応する事で、GmailのSMTPを経由してメール送信が出来る。

こんなメール乱世な御時勢を生きる、真っ当な自宅メールーサーバーなハッカー諸氏にとっても必須の技術といってもいいであろう。

ここでは、のCryus-SASLでのSMTP-AUTHを動作させた状態を前提として、それにTLSでの暗号化技術を乗せて、送信時にgmailへリレーするようにするまでを書いてみる。

postfixのインストール(太字がSMTP/TLSの部分)
opensslのヘッダファイルssl.hが/usr/sfw/include/opensslにあり、libssl.soとlibcrypto.soが/usr/sfw/libにある場合


export CCARGS="-DUSE_CYRUS_SASL -DUSE_SASL_AUTH -I/usr/local/include/sasl2 -I/usr/include/pcre -DUSE_TLS -I/usr/sfw/include"
export AUXLIBS="-R/usr/local/lib -L/usr/local/lib -L/usr/sfw/lib -R/usr/sfw/lib -lssl -lcrypto"
make tidy
make makefiles
make
#make install

次にサーバー秘密鍵と証明書+公開鍵の作成
#cd /etc/postfix
秘密鍵の作成
#openssl genrsa -out server.key 1024

証明書+公開鍵の作成
#openssl req -new -x509 -key server.key -out server.crt

#chmod 400 server.key server.crt


続いてpostfixの設定
/etc/postfix/main.cf


#daemn設定
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/postfix/server.key
smtpd_tls_cert_file = /etc/postfix/server.crt

#smtp送信設定

smtp_sasl_auth_enable = yes
smtp_sasl_tls_security_options = noanonymous
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_password_maps = dbm:/etc/postfix/sasl_passwd 
#(hashやbtree、cdbが良い人はお好みで)


gmail認証情報ファイルの作成
/etc/postfix/sasl_passwd

[smtp.gmail.com]:587 Gmailアカウント@gmail.com:パスワード
と記述。

gmail認証情報ファイル検索テーブル作成
#cd /etc/postfix
#postmap dbm:sasl_passwd (hashやbtree、cdbが良い人はお好みで)
sasl_passwd.pagとsasl_passwd.dirが出力されたのを確認
#chmod600 /etc/postfix/sasl_passwd*

動作確認

telnet llocalhost 25

220 サーバー名 ESMTP Postfix
ehlo localhost ←入力
250-サーバー名
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN


STARTTLSの行があるのを確認したのち、
sendmailコマンドでどこぞにメールを送信してテストしてみる。

トラックバックURL

 

コメントする

(必須項目:名前とコメント本文)
皆様のコメントを心よりお待ちしております。m(__)m