- http://www.postfix-jp.info/trans-2.1/jhtml/postconf.5.html
- http://www.asi.co.jp/techinfo/unix/postfix.html
- http://www.postfix-jp.info/jhtml/commands.html
- man 1 postconf
- man 5 postconf
config check
$ postfix check $ postfix -v check # verbose
config 表示
設定されている内容を表示
$ postconf
show default parameter
$ postconf -d
default 値から変更されたparameterを表示
$ postconf -n
使えるtable type 表示
$ postconf -m
queue
- 表示
postqueue -p
- 再送
postqueue -f
- 削除
postsuper -d queue_id
queue idはpostqueueで見る
postsuper -d ALL
で全削除
alias_maps の確認
postmap -s file # ファイルの中身全部表示 postmap -q key map_type:file # 指定したkey が見つかればそのvalueを表示
main.cf
- 不明点?
smtpd_client_restrictions の check_client_accessのhashファイルはpostmap 更新後にpostfixのreload不要だけど、transport_maps のfileはpostmap後にreloadが必要だった。違いがわからん。とりあえず設定変更後はreloadしとけばいいか。
mailbox / mailsize
- mailbox
defaulはmbox
- maildir
maildir用のディレクトリが、各ユーザで作成できる権限下にあれば
勝手に作成してくれる。
-
- ユーザのホームディレクトリ下に置く場合
home_mailbox = Maildir/
最後にスラッシュ必要。これで~username/Maildir/ の下にcur,new,tmpができる。この場合、ユーザのホームディレクトリ下に作成するので、ユーザ自身にMaildir ディレクトリの作成権限があるので勝手に作ってくれる。
-
- 指定のディレクトリ下/username に置く場合
mail_spool_directory = /var/spool/maildir/
(home_mailboxは指定してはいけない) 最後にスラッシュ必要。これで/var/spool/maildir/username/ の下にcur,new,tmp が出来る。この場合は、/var/spool/maildir 直下にmaildir 用のusername のディレクトリをユーザ自身に作成する権限がない。(/var/spool/maildir は普通root )
mkdir /var/spool/maildir/username chown username /var/spool/maildir/username
などを実行しておく必要があるとこのように色々面倒くさいので、userのホームディレクトリ自体をsymlinkしてしまうのがてっとり早いか。
ln -s /var/spool/maildir /home
このあとuseradd hoge -d /home/hoge のようにすればいい。
( /home/hoge/{cur,new,tmp} がmaildir用のディレクトリになる)
- おまけ
mail_location = ~/
とする。(mail_location = ~/Maildir ではない)
- mailsize
mailbox_size_limit mailboxのsize
message_size_limit 1mailのsize
log
- debug_peer_level
clientがdebug_peer_list にmatchした場合のlog level
defaultは2
- debug_peer_list
debug_peer_list = 127.0.0.1
- inet_interfaces
localhost、allとか
acl
- mynetworks
アクセス許可で利用する。
defaultはinet_interfacesとmynetworks_style で決定される
- mynetwork_style
defaultはsubnet。classとかhostとか。
- header_check
件名なども確認したい場合に。
main.cf
header_checks = regexp:/etc/postfix/header_checks
/^X-hoge:/ REJECT
等。
- body_checks
bodyみたいとき
main.cf
body_checks = regexp:/etc/postfix/body_checks
静的配送
- relayhost
non-localなドメイン宛のメールを送信するサーバ (中継サーバ)
sendmailでいうsmarthost? relayhostは1つしか指定できない。
relayhostをIPアドレスで指定する場合、以下のsmtp_fallback_relayを使わないと冗長性がなくなる。hostnameで指定する場合はDNSラウンドロビンにしておけば、各hostに接続を試そうとするので冗長性は保たれる。
- smtp_fallback_relay
配送先に到達できないときにrelayするhost。relayhostが死んだときの冗長用の設定などに。smtp_fallback_relayにはコンマ区切りで複数hostを設定でき、postfixは指定された順番で試していく。
- transport_map
transport_maps = hash:/etc/postfix/transport
postmap後にpostfixのreloadが必要? sendmailでいうmailtertable。
宛先ごとに配送先サーバを変更したい場合などに。IPの場合は[]で囲むとこもmailertableと同じ。ただし、mailertableと違って、複数のhostを記述できない様子。
なので、master.cf のserviceに新規に追加をして対応する。既に設定されているrelay の項目を見ればわかるが、optionでmain.cfの設定を上書きできるので、
relay1 unix - - n - - smtp -o fallback_relay=[10.0.0.11] relay2 unix - - n - - smtp -o fallback_relay=[10.0.0.12]
と設定しておいて、transportファイルに定義した、relay1, relay2 で設定をする。
relay1.localhost relay1:[192.168.0.11] relay2.localhost relay2:[192.168.0.12]
これでrelay1.localhost には192.168.0.11 に送れなかった場合は10.0.0.11,
relay2.localhostには192.168.0.12に送れなかった場合は10.0.0.12 に配送される。
smtpd_cilent_restrictinos
smtp connection の制限: default 制限なし
client IP、domainなどの制限。
- check_client_access
access fileで制限
- permit_inet_interfaces
$inet_interfaces で定義しているclient IP (自分のIP) を許可
- permit_mynetworks
$mynetworks を許可。 DMZとかを設定
- permit_sasl_authenticated
sasl 認証したclientを許可
reject_rhsbl_clientはhostnameを使うほう。
DNSBLに乗っていれば拒否。 引数 rbl_domain=d.d.d.d で設定
- reject_unknown_reverse_client_hostname
DNS 逆引きが出来なければ拒否。
- reject_unknown_client_hostname
正逆引きが一致しなければ拒否。
reject_unknown_reverse_client_hostname よりも強い制限。
アクセスを拒否する。
上記のいろんな設定をしたあと、最後にこれをかけば
defaultを拒否するpolicyとして設定できる。
- warn_if_reject
アクセスは拒否しないで、logに"reject_warning"と表示する。
policyを設定変更するときの確認などに。
smtpd_helo_required
そのまんま。最初にHELO/EHLO を要求する。これだけで少しSPAMを弾けるようなので設定する。
smtpd_helo_restrictions
HELO コマンドで指定されるdomainの制限 default 制限なし
- check_helo_access
helo/ehlo のdomain 名による制御
smtpd_sender_restrictions
MAIL FROM の制限 default 制限なし
- check_sender_access
from address/domain による制御
mail fromがFQDNでない場合は拒否
- reject_unknown_sender_domain
smtpd_recipient_restrictions
RCPT TOの制限
defautl: permit_mynetworks, reject_unauth_destination
- check_recipient_access
to address/domain による制御
rcpt toがFQDNでない場合は拒否
- reject_unauth_destination
以下の2条件を満たさない場合は拒否する。配送先アドレスが $relay_domains 、及びそのサブドメインに含まれなくて送信者指定ルーティングに含まない。
postfixが最終の配送先の場合、アドレスがmydestination、virtual_alias_maps
などに含まれていない
smtpd_data_restrictions
DATA commandの制限。 default 制限なし
smtpd_etrn_restrictions
ETRN の制御 default 制限なし
virtual domain
virtual_alias_domains = aaa.example.com, bbb.example.com virtual_alias_maps = hash:/etc/postfix/virtual
- /etc/postfix/virtual
info@aaa.example.com root hoge@aaa.example.com hoge @bbb.example.com root hoge@bbb.example.com hoge
@の前を指定しなかったら、そのdomainの全てのメールになる。指定したものはそのtableの値に。(↑だとhoge@bbb はhogeに、それ以外の@bbb はrootに)