サーバー構築

メールサーバーの構築メモ

通常、SMTPには、POP3やIMAPと異なりユーザーの認証させるための項目が存在しません。つまり、外部からのメールを不用意に許可してしまうと「SPAMメール」の送信などで不正に利用されてしまいます。そこで特定の人物からの送信を許可するため「POP before SMTP」と呼ばれるを手法説明しました。

PostfixはSMTPサーバー地震でユーザー認証をさせる為の項目としてSMTP AUTHと呼ばれる機能拡張を実装しています。SMTP AUTHの主な認証方法には、PLAIN、LOGIN、CRAM-MD5、DIGEST-MD5などがあります。また、使用する側もこれらの暗号方式に対応している必要があります。

簡単に言えば、メール送信の際にユーザーとパスワードによる認証を行って、正しく認証された時のみメール送信を行っても良いという許可を出すことが可能です。

認証させる為に必要なこと

ユーザーとパスワードの登録

SMTP AUTHで認証を行うユーザーとパスワードを登録します。
登録を行うとデータベースが「/etc/sasldb2」に作成されます。
# saslpasswd2 -u [ドメイン名] -c [ユーザー名]
Password:[パスワード](表示はされません)
Again (for verification):[同じパスワード](表示はされません)

ファイルの所有者を変更します。

  • データベースを参照させる為にPostfixのサーバー項目が「/etc/sasldb2」読み込み権限を与えます。
    # chgrp postfix /etc/sasldb2(グループをチェンジします)
    # chmod 640 /etc/sasldb2(権限を与えます)
    # ls -l /etc/sasldb2 -rw-r—– 1 root postfix 12687 Sep 4 13:25 /etc/sasldb2
    ※Postfixでも設定
    当然今回の件でもPostfixを使っているので設定します。
  • /etc/postfix/main.cfに追記します。
    smtpd_sasl_auth_enable = yes
    smtpd_recipient_restrictions =permit_mynetworks,permit_sasl_authenticated, check_relay_domains,reject
  • 平分によるパスワードの認証を拒否したい場合は指示するsmtpd_sasl_security_options = noplaintext
  • 最後にPostfixを再起動して設定変更を有効にして完了です。
    # /etc/init.d/postfix restart 又は # /etc/init.d/postfix start

POP before SMTPとSMTP AUTH

「POP before SMTP」と「SMTP AUTH」は非常に便利です。また、どちらも認証方式が違うだけかと私は思っています。「POP before SMTP」は受信ユーザー名とパスワードと認証する為のユーザー名とパスワードが一緒の場合、「SMTP AUTH」は受信ユーザー名とパスワードと認証する為のユーザー名とパスワードが一緒にもできるし、異なることも可能です。セキュリティーから言えば「SMTP AUTH」の方が良いと思います。

私の環境だけかも知れませんが、「POP before SMTP」と「SMTP AUTH」の双方を設定した状態ですとなぜかうまく動作しませんでした。ですからどちらか一方の設定のみ行うことを私はおすすします。

OP25B対策について

BIGLOBEのプロパイダーの為、OP25B対策にバリバリ引っかかってしまいました。対策はあることにはあるのですが、非常に条件が厳しく、送付できなくしました。この関係でBIGLOBEのプロパイダーでのサーバー構築は固定IPを取得した上での構築か、他のプロパイダーをお勧めします。BIGLOBEはこういう人たちのことを何も考えていませんから(苦)