LinuxServer 電子メールについてもう一度… 安全にメールサーバを利用する為に
前回取り上げたPOP3とIMAP4ではメールを受信する際、認証が必要でした。
サーバにユーザが存在するかを確認し、いなければ当然メールの受信は行えません。
これに対し、SMTPではユーザを認証する決まりがなく、正しい手順を踏めば
誰でもメールの送信が行えます。この為、悪意のあるユーザに不正に利用される
可能性があり、それらを防ぐ必要が有ります。
メールサーバでメールの送信前にユーザを認証をする技術に
「POP before SMTP」と「SMTP-AUTH」があります。
送信前に一度受信を(POP before SMTP)
ユーザーがPOP3サーバやIMAP4サーバにアクセスした際の認証ログをサーバ上に残します。
認証ログを基に「IPアドレス」のデータベースを構築します。
データベースに登録されているIPアドレスからはSMTPの使用を一定時間許可します。
POP before SMTPではデータベースにIPアドレス保存されていればSMTPの接続が
可能ですので、IPアドレスを保存している時間内に別ユーザーが偽ってメールを
送る可能性も有ります。
また、データベースからIPアドレスの情報が消えた場合、再度、POP3サーバや
IMAP4サーバで認証を行う必要があります。
さらに、認証プロセスを他のプロトコルが行っている為、SMTPに認証機能を
持たせる事が考えられ、SMTP AUTHが標準化されました。
メール送信認証(SMTP-AUTH)
SMTP-AUTHはSMTPでのユーザ認証機能としてSMTP拡張として規定されました。
SMTP-AUTHで使用するユーザ名とパスワードはPOP3やIMAP4とは別の物として
登録します。
SMTP-AUTHをサーバ使えるようにする
メールサーバ(Postfix)でSMTP-AUTHに対応した設定をしてみましょう。
Postfixではcyrus-saslというSASLライブラリを使用します。
cyrus-saslがインストールされていなかったらyumコマンドで
インストールします。
postfix側でcyrus-saslと連携するよう設定します。
[コマンド] # vi /etc/postfix/main.cf [main.cf上で設定するパラメータ]Postfix上でSASL認証を有効にします。
古いバージョンのAUTHコマンドを使用するクライアントは
拒否するよう指定します。
クライアントに提供する認証方法を指定します。
noanonymousは匿名によるログインを許可しません。
他に使用できる認証方法は次のようなものが有ります。
noplaintext:平文パスワードを使う認証方法を許可しません。
SASL認証に使用するサーバを指定します。
permit_sasl_authenticated,
reject_unauth_destination
SMTP_AUTHに認証されたクライアントにメール中継を許可する為、
smtpd_recipient_restrictionsを記述します。
PostfixでSMTP-AUTHを使う為の設定は以上です。