Carpe Diem

  Top > スポンサー広告> Mailサーバ > メールサーバの設定【外部対応】  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

メールサーバの設定【外部対応】

2011 - 11/28 [Mon] - 01:02

Postfixを設定した時点で、指定のネットワーク内ではメールのやりとりが可能になります。しかし前述のPostfixの設では、

mynetworks = 127.0.0.0/8, 192.168.0.0/24

となっているのでそのサーバーマシン自身とそのマシンを含むLAN内でしかメールサーバーは機能していません。
外部も使えるようにする場合、スパム等に不正中継されないようにSMTPサーバーに認証機能を追加します。

SASL2のAuthentication(認証)がどのような種類と方法で行われるのかというと、
1. SASLチェック用デーモンを利用する場合

pwcheck_method: saslauthd
mech_list: plain login
# PAM,shadowではcram-md5等が使えないため、plainおよびlogin認証のみに限定します


2. SASL用パスワードファイルを利用する場合

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: cram-md5 digest-md5 plain login


# これを指定しないと、CRAM-MD5が使えてもplainが優先されてしまうことがあります

3. Unixパスワードデータベースを利用する場合

pwcheck_method: pwcheck

などがあります。多くのサーバ構築サイトでは3を使っていますが、今回は2で設定してみます。ソースによると

それぞれに長所と短所があるわけですが、1の場合は暗号化の深みが浅いということです。平文(plain)での認証になるので安全対策としてはあんまり好ましくないです。しかし導入が比較的楽。2はmd5などのハッシュが使えるので暗号化の度合いが深くていいです。しかし、有線順位を明示的にしないと平文での認証も可能です。この方法では新たにパスワードファイルを自作する必要があるのですが、パスワードファイルが別になる分だけ安全です。3は、システムのパスワードファイルをそのままsaslauthで使ってしまおうというやり方です。パスワードファイルを作らなくていいので便利です。


とのことです。

◆インストール
# aptitude install libsasl2-modules sasl2-bin

一応インストールされたパッケージを確認してみます。
# dpkg -l | grep sasl2

libsasl2-2         2.1.23.dfsg1-1ubuntu3  Cyrus SASL - authentication abstraction libr
libsasl2-modules   2.1.23.dfsg1-1ubuntu3  Cyrus SASL - pluggable authentication module
sasl2-bin          2.1.23.dfsg1-1ubuntu3  Cyrus SASL - administration programs for SASL



◆SASL2の設定ファイルの編集

$ sudo emacs -nw /etc/default/saslauthd

START=no

START=yes


再起動します。
$ sudo service saslauthd restart



設定ファイルを編集したら今度はPostfixを編集します。


◆Postfixの設定
設定するのは以下のファイルです。
/etc/postfix/main.cf
/etc/postfix/master.cf
/etc/postfix/sasl/smtpd.conf [新規で作成]


◆master.cfの設定

$ sudo emacs -nw /etc/postfix/main.cf

以下を最後に追記します。Postfixのバージョンによってパラメータの記述が異なるので注意してください。

# SASL(SMTP-Auth) setting *original setting for omnioo mail server
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_application_name = smtpd (Postfix < 2.3)
smtpd_sasl_path = smtpd (Postfix 2.3 and later)
smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes


◆master.cfの設定
#submission inet n - - - - smtpd

submission inet n - - - - smtpd


ルーターなどのTCPポート:587を開けておきます。また/etc/servicesに

submission 587/tcp


の行があるか確認してください。なかったら付け加えてください。

◆smtpd.confの設定
$ sudo emacs -nw /etc/postfix/sasl/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: cram-md5 digest-md5 plain login



◆認証ユーザーの登録
コマンドは以下の通りです。
# saslpasswd2 -c -u
<ドメイン> <ユーザー名>

以下例です
# saslpasswd2 -c -u example.com user
Password: ******* (パスワードを入力)
Again (for verification): ******* (パスワードを再入力)


この認証アカウントを削除する場合は、
# saslpasswd2 -d -u <ドメイン> <ユーザー名>


登録したユーザーを確認するには、
# sasldblistusers2

user@example.com: userPassword


設定後は再起動します。

# sudo service saslauthd restart
# sudo service postfix restart


◆SMTP Authの動作確認
きちんと認証機能が設定されているかどうかをテストします。
# /usr/sbin/testsaslauthd -u <ユーザー名> -p ***********
0: OK "Success."

「0: OK "Success."」と表示されたら設定完了です。
「0: NO "authentication failed"」となったら駄目です。設定をもう一回見直してください。

しかしこの時点では、saslのコマンド内での設定が認証されているだけであってSMTPの認証がされているわけではありません。本来のSMTPの認証にはもうひと手続き必要です。

◆Postfixがsaslの認証用データベースを読み込めるようにする
これらの情報は、「/etc/sasldb2」というファイルに保存されています。このファイルをPostfix起動ユーザが見れるように設定します。
# chgrp postfix /etc/sasldb2
# chmod 640 /etc/sasldb2


さらに、Postfixがchroot環境で実行されている場合には、ハードリンクする必要もあります。Postfixがchroot環境で動いているかどうかは、設定ファイル「/etc/postfix/master.cf」を見ればわかります。もしくは「Postfixでのchroot構築」のように、プロセスを見た時に「-c」が付いているか見てください。
# ps aux | grep postfix
chrootじゃない場合
postfix 1914 0.0 0.3 2488 868 ? S 16:43 0:00 pickup -l -t fifo -u
postfix 1915 0.0 0.3 2540 952 ? S 16:43 0:00 qmgr -l -t fifo -u


chrootの場合
postfix 2019 0.0 0.3 2484 868 ? S 16:44 0:00 pickup -l -t fifo -u -c
postfix 2020 0.0 0.3 2536 948 ? S 16:44 0:00 qmgr -l -t fifo -u
-c

確認後、chroot環境で実行されている場合には
# ln /etc/sasldb2 /var/spool/postfix/etc

としてください。

再起動します。
# sudo service postfix restart
# sudo service saslauthd restart



◆SMTP認証の確認
# telnet localhost 25 [ENTER]
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 example.com ESMTP Postfix (Ubuntu)
ehlo example.com [ENTER]
250-example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN CRAM-MD5 LOGIN NTLM DIGEST-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

250-AUTH PLAIN CRAM-MD5 LOGIN NTLM DIGEST-MD5でもってきちんと認証されていることがわかりります。
ここまでくれば外部からメールを受信できるようになります。
またOB25が設定されていないプロバイダにもメールを送信できると思います。

◆メールログの確認
実際に認証して送信が出来ているかはメールログ/var/log/mail.logを確認します。使用した認証方法によりますが
sasl_method=LOGIN, sasl_username=メールアドレス
だったり
sasl_method=CRAM-MD5, sasl_username=メールアドレス

とあれば認証できています。ここに書かれていない場合は何らかの原因で認証できていないです。その場合mailコマンドでは送れますが(認証せずに済むため)、メールクライアントを使用する場合に認証エラーで送れなくなります。しっかりチェックしましょう。


ソース:
PostfixでSMTP-AUTHを実装する方法(SASL2編)
SMTP認証とSASL2の設定
SMTP Authenticationの導入(Postfix編)
Postfix設定パラメータ
Postfix SASL How

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。