postfixメモ 
top

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つのディレクトリを作っておかないと配送できない。

imported