本記事では、自分で構築したメールサーバから、ISPのメールサーバに、メールをリレーする方法をまとめる。
試した環境は、構築したメールサーバ(postfix on centos 5.3)、ISPはeo光(メールサーバはSASL認証が必要、サブミッションポート使用)。以下のパッケージをインストールして、基本的な設定が済んでいることが前提(詳しくは、メールサーバ構築参照)。
cyrus-sasl-2.1.22-4 cyrus-sasl-lib-2.1.22-4 cyrus-sasl-plain-2.1.22-4 postfix-2.3.3-2.1.el5_2
用語説明
SASL認証、OP25B、サブミッションポートなどの情報は以下を参照のこと
概要
メールサーバを自前で立てる場合、配送するメールは、他のメールサーバに中継してもらい、宛先に届けられる。近年は、メールスパム対策のため、メール転送に利用される25番ポートを制限されるようになった。その代替ポートとして587番が使われ、他のサーバに中継してもらうには認証が必要になるというもの。
注意点
今回は、自前で立てたメールサーバはクライアントとして、他のメールサーバにメールを中継してもらう場合を扱う。他のメールサーバやメールクライアントからのメールを中継する機能を持たせることもできるが、扱わない。後者の場合は、自前で立てたメールサーバは、SASL認証のメールサーバということになるが、今回は扱わない。あくまで、今回は(ISPの提供する)SASL認証のメールサーバに、メール中継を依頼するメールサーバの設定についてである。
設定方法
まず、認証に必要になるアカウント、パスワードの設定ファイル(/etc/postfix/sasl_passwd)を作成する。次のような書式にする。
saslauth.xxx.jp:587 foo.baa:hoge
saslauth.xxx.jpはISPのSMTPサーバで、587はそのポートである。foo.baaはアカウント名で、hogeはパスワードである。eo光では、saslauth.eonet.ne.jpの587ポートである。アカウント名は、POP IDにする(@の前の部分かと勘違いしていたが、そうではなくても、POP ID=受信メールアカウントなるものが存在して、xxxx%yyy.eonet.ne.jpというフォーマットであるので、要注意!)。パスワードは、POPパスワードである。
生パスワードを書き込んでいるので、パーミッションと所有権を変更しておく。そして、これをデータベースに登録する。
# chmod 600 /etc/postfix/sasl_passwd # chown root. /etc/postfix/sasl_passwd # ls -l /etc/postfix/sasl_passwd -rw------- 1 root root 60 Jun 18 00:00 /etc/postfix/sasl_passwd # postmap /etc/postfix/sasl_passwd
次に、postfixの設定ファイル(/etc/postfix/main.cf)を編集して、saslauthの設定を書き込む。ここで、上の「注意点」で触れたことに注意。sasl認証メールサーバを構築の場合はsmtpd_sasl....(dが付いている)というパラメタを設定する必要があるが、ここではsmtp_sasl...(dが付いていない)であることに注意!また、relayhostの部分は、自分が利用しているISPで指定されているメールサーバにすること。
relayhost=smtpauth.eonet.ne.jp:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_sasl_mechanism_filter = plain, login, cram-md5
smtp_sasl_mechanizm_filterの部分は、OP25B対策で説明されているように、telnetでrelayhostに接続して確認するという良い。
# telnet smtpauth.eonet.ne.jp 587 Trying xxx.xxx.xxx.xxx... Connected to smtpauth.eonet.ne.jp (xxx.xxx.xxx.xxx). Escape character is '^]'. EHLO smtpauth.eonet.ne.jp <---入力 250-PIPELINING 250-SIZE 20000000 250-ETRN 250-AUTH CRAM-MD5 LOGIN PLAIN 250-AUTH=CRAM-MD5 LOGIN PLAIN <---確認 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN QUIT
次に、設定ファイル/etc/postfix/master.cfで、次の部分をコメントアウトする。
submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
動作テスト
後は、postfixをリロードして、どこかにメールを送ってみて、届くかどうか確認する。
# /etc/rc.d/init.d/postfix reload Reloading postfix: [ OK ] # mail xxx@gmail.com Subject: test test . Cc: # tail /var/log/maillog ....
0 コメント:
コメントを投稿