Linuxサーバより愛を込めて。

Linux(Ubuntu)サーバとダーツを愛する中年サラリーマンの日記。

Linuxサーバ

Ubuntu14.04+Postfix+Dovecot+SASLでSMTP認証

SMTP認証とは

元来、SMTPというプロトコルにはユーザ認証という概念がなかったんですって。つまり送信者が本物かどうか確認せず簡単にメール送信ができる仕組みだったようです。

 

が、これによって無差別広告メールの横行という困った事態が発生したため、メールの送信を行う前に送信者の身元を確認しようという考えで生まれたのがSMTP認証という仕組みです。

 

というか、SMTP認証の前に「POP Before SMTP」という仕組みが生まれたんだそうですわ。

 

この仕組み、メール受信を行う際にPOPサーバと認証を行ったIPに対して有効時間を設定し、その間だけメール送信を許可するという流れだったそうなんですね。

 

しかしこれで確認が取れるのはあくまでPOPサーバとのやり取りのみであり、SMTPに対する接続が正規のものかどうかは本質的な問題にならないんですよね。

 

ということで、メール送信を行う際にSMTPサーバとユーザ間できちんとした認証を行い、ユーザの確認をすることで不正なメール送信を防ごうというのがSMTP認証の趣旨となります。

 

それでは前置きが長くなりましたがSMTP認証の設定を行いましょう。

 

SMTP認証の設定

このまえ書いたPostfixの設定で、/etc/postfix/main.cfの最下部にSMTP認証に関する追記をしていました。

 

Postfixを設定してSMTPサーバを構築する

 

が、これはあくまで認証を行うための記述であり、実際に認証を行うために次のようにしてパッケージを導入してやります。

 

SASL関連のパッケージ導入と設定

 

これでSASL関連のパッケージが入ります。以下のファイルを開いて編集しましょう。

 

 

確認したら「OPTIONS ~」以下のディレクトリが存在するか見てみましょう。自分の場合はありませんでしたが。

 

なければ作っておきます。でないとエラーで動きません。

 

 

ここまででSASLの設定はOKなはず。サービスを再起動して動作確認をしてみます。

 

 

※なお、この動作確認のユーザ名とパスワードはUbuntuのユーザと該当するパスワードになります。

 

Postfixの設定を追加

一通りの設定は/etc/postfix/main.cfの最下部に記述済みなので、ここでは認証方法を記述した設定ファイルを追加で作成します。

 

 

これでPostfixの設定も終了。あとはTelnetを使用して動作確認を行います。

 

telnetで動作確認

端末にて以下のとおり入力して応答を確認します。

 

エンコードしたユーザ名とパスワードを入力して「Authentication successful」と表示されれば設定が正常に行われています。

 

ちなみにエンコードを行うには端末で

 

 

と入力することで可能ですので、ユーザ名とパスワードをそれぞれエンコードした後、メモ帳か何かに貼り付けておいて使用するといいかもしれません。

 

これでメールの送信時におけるSMTP認証が無事設定できました。

 

まとめ

スパムメール対策として重要なSMTP認証ですが、じつは結構わかりづらいし面倒なんですよね。

 

今回の方法はOSのユーザ名とパスワードをそのまま使用する方法なんですが、実はユーザ名はそのままにしながらSMTP認証用のパスワードを付与してやることもできるんです。

 

以前はそちらの方法を使っていたんですが、今回どうしても上手くいかなかった(設定の仕方を忘れた?)のでこのような形となりました。

 

セキュリティ的には別のパスワードを使用したほうが好ましい気もしますので引き続きチャレンジしつつ、上手くできたらまたアップしたいと思いますがあまり期待しないで下さい。。。

 

あとはOP25B対策を施してLAN外のクライアントからメールの送信ができれば普段使いとしては十分なはず。ながくなってしまったので今日はここまでにします。

-Linuxサーバ
-, ,