postfixインストールのテスト
- 外部からSMTP経由でACCOUNT@gaku.netにメールが送れる。
- 外部からSMTP経由でACCOUNT-ext@gaku.netにメールが送れる。
- ACCOUNT@gaku.netからSMTP経由でACCOUNT@gmail.comにメールを送ろうとしたとき、送信を受け付けない。
- ACCOUNT@gaku.netからSMTP経由、SMTP-AUTHをすればメール送信を許可する。
SMTPポート
ISPによっては外部ネットワークのポート25へのアクセスを禁止しているところがある。これは、telnet soyuz.gaku.net 25で接続できないことで確認できる。
これを回避するため、別のポート、port 587を利用するための設定は以下のとおり master.cfに以下の行を追加。
587 inet n - n - - smtpd -v
エラーメッセージ
Aug 26 03:57:40 sputnik postfix/smtpd[11301]: fatal: open database /etc/postfix/badrecipient.db: No such file or directory Aug 26 03:57:41 sputnik postfix/master[14222]: warning: process /usr/lib/postfix/smtpd pid 11301 exit status 1
/etc/postfix/main.cfでこのファイルを以下のように参照しているにも拘らず/etc/postfix/badrecipient.dbが無いの原因。
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
check_relay_domains
<b>check_recipient_access hash:/etc/postfix/badrecipient</B>
この場合、ファイルbadrecipientを書いて/usr/sbin/postmapで、.dbファイルを生成する。
saslとpostfix
saslとpostfix, MySQLを使って認証。
ディレクトリ位置
ほとんどの設定は、/etc/postfix/main.cfで行う。
設定
recipient_delimiter = -
拡張メールアドレスの区切り記号に’-‘を使う。(デフォルトは’+’)
メールボックスへのローカル配送
main.cf
mailbox_transport = maildrop
master.cf
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
home.gaku.netへのメールはローカル配送に廻される。mailbox_transportでメールボックスへの配送は、maildropサービス(?)を使うように指定している。maildropサービスの詳細は、master.cfのmaildropの項目に書かれている。大まかに言えば、ユーザーvmailで/usr/bin/maildropを起動する。recipientは、メール受信者のメールアドレス(user@home.gaku.netなど)である。
拡張アドレスの場合、test-123@home.gaku.netへのメールのrecipientはtest@home.gaku.netとなる。
maildropは、/etc/userdb.datから、指定されたメールアドレスのエントリを探す。そのエントリが有効になるためには、home=,uid=,gid=の項目が設定されていなければならない。home=は、メールボックスを持つユーザーのディレクトリとする。うちのサーバーでは、 /home/vmail/<ドメイン>/ユーザー名としている。したがって、test@home.gaku.netの場合は、
test@home.gaku.net uid=509|gid=100|home=/home/vmail/home.gaku.net/test
である。
maildropは、/etc/maildroprcという設定ファイルを使用する。このファイルでどこにどんな形式でメールを置くかを決定する。
DEFAULT="$HOME/Maildir/"
この場合、最後の文字が’/’なので、Maildir形式で配送され、その配送先は/home/vmail/home.gaku.net/test/Maildir/となる。Maildir配送の場合は、そのディレクトリ以下にcur/, new/, tmp/の3つのディレクトリを作っておかないと配送できない。
