Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。

2009年6月18日木曜日

ISPのメールサーバにリレーする方法 このエントリーを含むはてなブックマーク

本記事では、自分で構築したメールサーバから、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 コメント:

キーワード

キーワード別に記事を分類してあります。クリックすると各キーワードに該当する記事たちが表示されます。

筆者について

自分の写真
趣味はコンピュータ、音楽、写真などです。