Postfix第一世代の手順を記録として残しておく。いつの記事が確認してみたら,このページは,2008年の七夕あたりくらいに頑張っていたらしい。


Postfixをインストールする

いままで、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"

スペースで失敗したのね。SMTP_AUTH with Cyrus SASL

で、下記の失敗したときは、Cyrus SASL Supportにチェックを入れてインストールしたと思う。

スペースを取り去ることによってPostfixが上手く動作し始めたようなので次は、

POPサーバだ!Dovecot

と思って、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_limitvirtual_alias_mapsによって、1つの受信者アドレスから展開されるアドレス数の最大値
virtual_alias_maps仮想ドメインのメールアドレスと実メールアドレスの対応検索テーブルのリスト
virtual_alias_recursion_limitvirtual_alias_mapsの展開の繰り返し数の最大値
virtual_mailbox_base仮想ユーザのメールボックスのベースディレクトリ
virtual_mailbox_domainsvirtual配送エージェントで配送するドメインのリスト
virtual_mailbox_limitメールボックスの最大サイズ(バイト単位)
virtual_mailbox_lockUNIX形式のメールボックスにメールを格納する際のロック形式のリスト
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の設定

何を決めなくちゃいけないか?どこに設定しなくちゃいけないか?が整理されていなかったらしい>自分

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形式のデータベースに変換する。

SPAMメール対策ツール Postgrey

スパムメール対策として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]キューから削除

deferredキュー

で、本当は、手動で消しちゃうんぢゃなく、

# postsuper -d ALL deferred

が正しいやり方。

quabbinの日記さんのところでは、その後の検証をおこなっているが、ここでqueueの状態を確認するコマンドも使っていたので、更にメモ

# postqueue -p

これでqueueの中に何が残っているか確認できる。

Postfixのページでまた勉強だな。


Last-modified: 2022-05-05 (木) 22:27:10