Postfix第一世代の手順を記録として残しておく。いつの記事が確認してみたら,このページは,2008年の七夕あたりくらいに頑張っていたらしい。
いままで、Qmailを使っていたのだが、Postfixを使ってみたくなり、ちくちくとインストールをしていた。
インストールの方法は...
最近は、portsからportinstallを使ったり、pkg_add -r を使ってインストールがマイブームです。
と云うより簡単だし。
と、サーバを低消費電力がうたい文句のATOM君に換えたので再々...インストール(何回目だろう(T_T;
基本的にはportinstallを使ってインストールした。
インストール一回目はオプションを聞かれるのでメモ
(二回目からは聞かれなくなる。オプションを再設定する場合、FreeBSD_Ports参照)
sendmailの停止とpostfixの起動をrc.confに記述
postgreyはお好みで
# # sendmail stop # sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" # # postfix # postfix_enable="YES" postgrey_enable="YES"
で、下記の失敗したときは、Cyrus SASL Supportにチェックを入れてインストールしたと思う。
スペースを取り去ることによってPostfixが上手く動作し始めたようなので次は、
と思って、Postfixと相性が良さそうなPOPサーバを探していたところ、どうもDovecotが良いようなのでこれをインストールする。
これもportsからインストールした。
telnet localhost 110
で確認してみると
> telnet localhost 110 Trying 127.0.0.1... Connected to localhost.foo.net. Escape character is '^]'. +OK Dovecot ready. USER リアルユーザ +OK PASS リアルユーザパスワード +OK Logged in. quit +OK Logging out. Connection closed by foreign host. >
動作しているみたい。
さて、やりたいことは、バーチャルドメインとバーチャルユーザを管理したいわけで、いちいちリアルユーザを登録するのは面倒。
調べていくとサバカン日記+さんのpostfixとdovecotでバーチャルドメイン(バーチャルメールボックス構築編)壱がビンゴなわけで、「やりたいこと」がまさにビンゴ
というわけでサバカン日記+さんの設定を真似っこしながら設定をしていくことにする。
まだできてない(T_T);
一つのホストで複数のドメインを管理する「バーチャルドメイン」とホストに実ユーザが存在しなくてもメールを受け取れるバーチャルメールボックスを設定したい。結構オプションがあるのでとりあえず列記してみる。
virtual_alias_domains | $virtual_alias_mapsに対応する仮想ドメインのリスト | |
virtual_alias_expansion_limit | virtual_alias_mapsによって、1つの受信者アドレスから展開されるアドレス数の最大値 | |
virtual_alias_maps | 仮想ドメインのメールアドレスと実メールアドレスの対応検索テーブルのリスト | |
virtual_alias_recursion_limit | virtual_alias_mapsの展開の繰り返し数の最大値 | |
virtual_mailbox_base | ○ | 仮想ユーザのメールボックスのベースディレクトリ |
virtual_mailbox_domains | ○ | virtual配送エージェントで配送するドメインのリスト |
virtual_mailbox_limit | ○ | メールボックスの最大サイズ(バイト単位) |
virtual_mailbox_lock | UNIX形式のメールボックスにメールを格納する際のロック形式のリスト | |
virtual_mailbox_maps | ○ | 仮想ユーザのメールアドレスとメールボックスの対応検索テーブルのリスト |
virtual_transport | $virtual_mailbox_domainsに適合するドメインの場合に使用される配送エージェント | |
virtual_uid_maps | ○ | 仮想ユーザのUIDを取り出すためのテーブル |
virtual_gid_maps | ○ | 仮想ユーザのGIDを取り出すためのテーブル |
virtual_minimum_uid | 仮想ユーザのUIDとして使用できる最小の数値 |
virtual_aliasとvirtual_mailboxがvirtualという項目で説明されているので、なんとんく混乱していた。
「virtual_aliasとvirtual_mailboxとvirtual_transportは同時に設定するとエラーがでる。」という記述があったので目が覚めた。
今回設定したいのは、
■ドメインごとの仮想ユーザのメールボックスに配送する
ということで設定する項目(一覧表)に○をつけてみた。
何を決めなくちゃいけないか?どこに設定しなくちゃいけないか?が整理されていなかったらしい>自分
virtual_mailbox_domains = DOMAIN1.com, DOMAIN2.net virtual_mailbox_base = /usr/local/vmail virtual_mailbox_maps = hash:/usr/local/etc/postfix/virtual_mailbox virtual_gid_maps = static:5000 virtual_uid_maps = static:5000
でもって/usr/local/etc/postfix/virtual_mailboxは
webmaster@DOMAIN1.com <-TAB-> DOMAIN1/webmaster/ user@DOMAIN1.com <-TAB-> DOMAIN1/user/ webmaster@DOMAIN2.net <-TAB-> DOMAIN2/webmaster/
となるのかな。
そのあと、
# postmap /usr/local/etc/postfix/virtual_mailbox
としてhash形式のデータベースに変換する。
スパムメール対策としてPostgrey (Postfix Greylistig Policy Server)日本語ポータルを参考にPostgreyをインストールした。
インストールは至って簡単(といってもソースからインストールした訳ではなくports)
# cd /usr/ports # portinstall mail/postgrey
インストールが終了したらとりあえず、起動してみる。
# /usr/local/sbin/postgrey --inet=10023 -d
としてみるが起動せずorz.
そそ、rc.confに記述が必要。
# vi /usr/local/etc/rc.conf : : postgrey_enabl="YES"
これで、起動できる。
んでもって、postfixのmain.cfのsmtpd_recipient_restrictionsに追記する。
# vi /usr/local/etc/postfix/main.cf : : smtpd_recipient_restrictions = permit_mynetworks, : check_policy_service inet:127.0.0.1:10023 :
ほほー、ここで10023が出てくるのねん。
# postfix reload
postfixを再起動する。
このあと、携帯からとりあえず、メールを送ってみる。
このとき、tailでlogをモニタしてみる
# tail -20 /var/log/maillog
最初は、newとなり、接続を切断している。
1分ごとに再送して来て、5分後にpassに変わってメールを受信した。
効果はてきめんで、いままでさんざん来ていたSPAMが来なくなった。
ただ、whitelist(むないように許可するリスト)はあえて作ってみなかったので暫くはログを監視する日々となりそう。
そうか、whitelistを作成する目的は、postgrey日本語ポータルとかで「whilelistは信頼できる人に予め配信を許可したい」とタイトルが付いているけど、相手のメールサーバとこちらのメールサーバに余計な負荷をかけない目的もあるのかなぁとも思ったりして。
少しだけ炭素排出量を減らすことができる!?
なんらかの問題により配送されなかったメールをpostfixは一定期間配送しようとがんばる。
でもそのメールはいらなかったりする場合に削除したい。
ログからIDを見つけたので、findでdeferとdeferredに情報があることがわかったので、とりあえず、手動で片っ端から消していった。
それ程見当違いでもなかったけど、postfix deferのキーワードでGoogle様のお告げを待ったところ、まるっきり同じことをしている方がいたのでメモ
[postfix]キューから削除
で、本当は、手動で消しちゃうんぢゃなく、
# postsuper -d ALL deferred
が正しいやり方。
quabbinの日記さんのところでは、その後の検証をおこなっているが、ここでqueueの状態を確認するコマンドも使っていたので、更にメモ
# postqueue -p
これでqueueの中に何が残っているか確認できる。
Postfixのページでまた勉強だな。