sendmail設定(4) SMTP-AUTH(認証)+SMTPs (SSL/TLS) を使ってみる
前回までの関連記事
前回までで、簡単なSendmail + Submissionポート + SMTP-AUTH認証 + STARTTLS までの動作確認まで行いました。
今回は、STMPs ( STMP over SSL ) 狭義の意味での SSL/TLS を使って暗号化を行ってみます。
この記事は、
の記事をベースに話をしています。もし、上記記事を読まれていないおうなら、先に読まれることをおすすめします。
STARTTLSとは、
広い意味でのSTMP over SSL (SMTPs) の1つの方法で、最初の接続時においては、SMTP が利用され、その後、SSL(or TLS)にて暗号化が施されます。
それに対して、SSL/TLSとは、
最初の段階から、SSL(or TLS)による暗号化が図られており、より安全と言われています。
先にも書いたようにいずれも広い意味での、STMPs ( STMP over SSL )といわれています。
狭い意味でSTMPs ( STMP over SSL )という場合は、後者を指します。
STARTTLSは、一般的にSubmission Port (587) と共に用いることが多く、
SSL/TLSは、別のSubmission Port (465) が用いられます。
STMPs ( STMP over SSL ) SSL/TLS を使うための設定
STMPs ( STMP over SSL ) SSL/TLS を使うための設定は、sendmail設定(3)Submissionポート(サブミッション・ポート)& SMTP-AUTH(認証)& STARTTLSを使ってみる で説明しているSTARTTLS とほとんど同じです。
submission ポートの違いだけです。
STARTTLS時と同じようにopensslを使います。
もし、opensslをインストールしていない場合は、
sednmail設定(3) STARTTLS設定 – opensslをインストール を参照してください。
SSL用の証明書を作成する。
メールのサーバー証明書の作成は、プライベート認証局の証明書、サーバー証明書、クライアント証明書の作成方法について を参照してください。
(ここでは例として、サーバー証明書作成時の Common Name に mail.exmaple.com を指定して作成します。)
ここでは、サーバー証明書、秘密鍵ファイルがそれぞれ以下のファイル名で作成されたものとして、以降、記述します。
- プライベート認証局証明書 → /etc/pki/CA/cacert.pem
- サーバー証明書 → /etc/pki/CA/certs/mail.example.com.crt
- サーバー秘密鍵 → /etc/pki/CA/private/mail.example.com.key
sendmail.mc を設定する。
STARTTLS時とほぼ同じようにsendmail.mcを設定します。
SSLを使用する宣言と証明書(mail.pem)のありかを設定するところまでは、全く同じです。
/etc/mail/sendmail.mc を編集します。
...
define(`confCACERT_PATH', `/etc/pki/CA')
define(`confCACERT', `confCACERT_PATH/cacert.pem')
define(`confSERVER_CERT', `confCACERT_PATH/certs/mail.example.com.crt')
define(`confSERVER_KEY', `confCACERT_PATH/private/mail.example.com.key')
...
|
次に、一般的なSubmissionポートでなく、SMPTs用のTCPポートを開きます。
/etc/mail/sendmail.mc を編集します。
...
...
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')
...
|
一般的なSubmissionポート(587)が不要なら、submissionの設定をコメントアウトします。(587も、そのまま利用することもできます。その際は、コメントアウトしないようにします。)
また、SMPTs用のTCPポート(465)を開くように設定します。
ここの編集がポイントです。
編集を終えたらsendmail.cfを更新します。
$ m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
|
次に、TCPポート465がiptableなどで閉じている場合は、開いておきます。
$ /sbin/iptables -A INPUT -p tcp --dport 465 -j ACCEPT
|
最後にsendmailを再読み込みします。
$ /etc/init.d/sendmail reload
sendmail を再読み込み中: [ OK ]
$
|
メールクライアントからメールを送信してみる。
最後に確認作業です。この確認には、メールクライアントソフトを使って確認するのが間違いが少ないでしょう。
ここでは、フリーメールクライアントソフトのThunderBirdを使ってみます。
メニューの[ ツール ] – [ アカウント設定 ]でアカウント設定画面を開きます。
アカウント設定画面から、送信(SMTP)サーバー を選択し、テストに用いるサーバーを一覧から選択し、[ 編集 ] ボタンをクリックします。
- 説明:
ここでは、例としてtestを入力しています。何でも可。
- サーバー名:
ここでは、例としてmail.example.comを入力しています。正しいメールサーバー名あるいはIPアドレスを設定します。
- ポート番号:
ここでは、Submissionポートを使うので、465を設定します。
- 接続方法:
ここでは、SSL/TLSを選択します。
- 認証方式:
ここでは、通常のパスワード認識を選択します。
- ユーザ名:
ここでは、例としてhoge@example.comを入力しています。sendmail設定(2)Submissionポート(サブミッション・ポート)& SMTP-AUTH(認証)を使ってみる で記載したSASLで指定したユーザ名になります。
編集を終えたら、OKボタンをクリックして変更内容を保存したら、適当な外部サーバー宛(例えばYahoo!のフリーメールなど)のメールを送信してみましょう。
メールが送信されればOKです。
初回は、以下のようなメッセージが表示され、送信できないかもしれません。
このメッセージと同時に以下のような画面が表示されていると思います。
このメッセージは、「証明書は、勝手に自前で作成した証明書なので、信用性がありません。」という趣旨のものです。
とりあえず、
セキュリティ例外をクリックすると以降、メール送信できるようになります。
更に、その上のチェックボックスにチェックを入れておけば、それ以降、この画面は表示されません。
または、あらかじめ
プライベート認証局の証明書(ここでの例は、/etc/pki/CA/
cacert.pem )をあらかじめメールクライアントツールにインストールしておけば、上記のようなメッセージは表示されません。
以下は、ThunderBirdでの例です。先のプライベート認証局の証明書をダウンロード済として解説します。
- メニュー [ツール] – [オプション] をクリックします。
- オプション画面上の[詳細]をクリック、[証明書]タブを選択します。
[証明書を表示]ボタンをクリックします。
- 証明書マネージャ画面上の[認証局証明書]タブを選択します。
[インポート]ボタンをクリックし、先にダウンロードしたプライベート認証局の証明書を指定しインポートすればOKです。
どうだったでしょうか?
SSL/TLSは、STARTTLS以上にセキュアだと言われています。
会社で使うなら、STARTTLSよりSSL/TLSでしょう。
ここでは、詳しく説明していませんが、
同様にウェブサイトでもSSLを使う場合は、クライアント用の証明書によって、さらにセキュアな設定を行うことができます。
セキュリティに関しては、奥が深いです。
上記のようなSSL/TLSや、以前のSTARTTLSを使ったとしても、メールクライアントソフトからSMTPサーバーまでの暗号化だけが保障されているに過ぎません。
受け取ったSMTPサーバーから、受信ユーザまでの暗号化は保障されていませんから、この暗号化がどれだけ意味があるのか、疑問がぬぐえないのも事実です。
今回紹介しているSTARTTLSよりSSL/TLS以外にも、S/MIME などのよりセキュアな規格もあります。
会社によっては、そんなところまで考えるべきなのかもしれませんね。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
関連記事 :
コメントを投稿 :