| POP before SMTP(PbS)とは? |
メールサーバーを構築する場合、送信メールサーバー(SMTPサーバー)と、受信メールサーバー(POP/IMAPサーバー)の構築が必要です。
Postfix を外部から利用する為には、POP before SMTP か、SMTP-AUTH のどちらかの送信認証機能が、必要になります。
POP before SMTP とは、メール送信する前にメール受信を行い、その際にユーザー認証を行います。
ユーザー認証時のユーザーのIPアドレスを一定時間サーバー側で記録しておき、一定時間内はそのIPアドレスからメール送信が可能というものです。
当サイトでは、送信メールサーバーには Postfix 受信メールサーバーには courier-imap(Maildir方式) を採用しています。
| Maildir とは? |
MTA(主にsendmail,postfix,qmailなど)のメールの格納方式には Mailbox方式とMaildir方式があります。
Mailbox方式
/var/spool/mail/ユー ザー名というファイルにメールを蓄える方式で、1つの ファイルに複数のメールを蓄えます。
Maildir方式
/home/ユーザー名/Maildir/newとい言うディレクトリの中に、1つのメールにつき1つのファイルを使用する方式です。
| Maildir にする理由 |
Mailbox形式だと、1人のユーザー宛のメールは全て1つのファイルに格納される為、ファイルが壊れると全てのメールが
読めなくなる可能性があります。
しかしMaildir形式では、ファイルが壊れても1通のメールが読めなくなるだけで被害を最小限に抑える事が可能です。
また、Mailbox形式の場合、あるユーザーのメールでディレクトリが一杯になると、他のユーザーのメールが配送できなくなる可能性があります。
しかしMaildirならば、ユーザーのホームディレクトリに容量制限(quota)で制限をかけてしまえば事前に被害を防ぐ事が可能です。
上記の理由でYosi はMaildir をお勧めし、当サイトではcourier-imapを利用した Maildir形式 にて構築して行きます。
| Maildir を作製する |
Maildir形式を使用するにあたり /home/ユーザー名 の中にMaildir と言うディレクトリを作成する必要があります。
| # mkdir /home/ユーザー名/Maildir /home/ユーザー名/Maildir のアクセス権を変更 # chown -R 所有者:グループ名 /home/ユーザー名/Maildir 例) # chown -R yosi:yosi /home/yosi/Maildir ← 所有者、グループ名が yosi の場合 ※ 当サイト ユーザーの追加と削除 に記載の方法でユーザーを作成した場合、所有者、グループ名は同じになります。 |
※ Maildir を自動作製する
/etc/skel/の中身のディレクトリがユーザーを追加した時に自動で作成されます
なので skel の中に Maildir フォルダを作成しておくといちいち、後からディレクトリを作ったり、アクセス権を
変更する手間が省かれます。
| Postfixの設定 |
# vi /etc/postfix/main.cf ← 設定ファイル編集 myhostname = server.xxxx.net ←ホスト名.ドメイン名を指定 mydomain = xxxx.net ← ドメイン名を指定 myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain $mydomain # 550を指定し、存在しないユーザー宛てのメールを拒否し、即座にエラーメッセージを返すようします unknown_local_recipient_reject_code = 550 ← コメントにする (# があれば削除) #unknown_local_recipient_reject_code = 450 ← # をつけてコメントアウト # postfixのリレーの許可にdracを追加し、内部ネットワークアドレスとローカルホストアドレスを指定 mynetworks = 127.0.0.0/8, 192.168.0.0/24, check_client_access hash:/etc/mail/dracd ← 追記 relay_domains = $mydestination alias_maps = hash:/etc/postfix/aliases alias_database = hash:/etc/postfix/aliases home_mailbox = Maildir/ ← メールボックスをMaildir方式を指定 ※ メールボックスと、メールに容量制限する場合以下の二項目を追記します mailbox_size_limit = 30720000 ←メールボックスの容量制限(例 30Mb) message_size_limit = 1024000 ←メールのサイズ容量制限(例 1Mb) smtpd_banner = $myhostname ESMTP unknown ← メールサーバー名を隠す ※メールボックスをMaildir方式を使用するので以下の二項目をコメントアウト #mail_spool_directory = /var/spool/mail #mailbox_command = /some/where/procmail -a "$EXTENSION" allow_percent_hack = yes # /etc/rc.d/init.d/postfix restart ← 設定終了後に再起動 |
| postfix+courier-imapでPOP before SMTP |
postfixとcourier-imapを使ってMaildirのままPOP before SMTPをどうしても、やりたかっ たのでパッケージを作ってみました。
まず、Yosi がリビルドした courier-imap対応dracd と dracd対応courier-imap の2つをダウンロードしてください。
※ 注意!
リビルドで作製したcourier-imapと、dracdは、Aptでアップグレードした場合、送受信が上手く出来なくなります。
各種対処方法のページを参考に、Aptのアップグレード対象から必ず除外して下さい。
★ courier-imap対応dracd
dracd-1.12-0vl1courier.i386.rpm
dracd-1.12-0vl2courier.i386.rpm
dracd-1.12-0vl4courier.i386.rpm new!(2007 02/11)
★ dracd対応courier-imap
courier-imap-3.0.5-0vl1drac.i386.rpm
courier-imap-3.0.8-0vl2drac.i386.rpm
courier-imap-4.0.3-0vl1drac.i386.rpm new!(2006 04/01)
※ 参考
courier-imap4系のリビルドに関してPbS対応パッチを配布されている「うさぎたろうの秘密」の管理人の小町様に色々とご協力をいただき無事、リビルドが完成しました。
courier-imap3系ではPbS対応パッチを当てるだけで簡単にリビルドできましたが、courier-imap4系からは、
各種パッチのリビルドが必要となり手順がややこしい為、サイトでリビルド手順の公開は控えさせていただきます。
今までリビルドの経験があり、4系のリビルドで質問がある方は管理人Yosiまでご連絡ください。
| courier-imapとdracdのインストール |
# rpm -e qpopper ← courier-imapをインストールするので削除 # rpm -e imap ← courier-imapと競合するので削除 ※注 courier-imap4系からcourier-authlibのインストールが必要です。 courier-imap3系ではインストールする必要はないです。 # apt-get install courier-authlib ← courier-authlibインストール(※ courier-imap4系のみ) パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下の追加パッケージがインストールされます: expect thread 以下のパッケージが新たにインストールされます: courier-authlib expect thread アップグレード: 0 個, 新規インストール: 3 個, 削除: 0 個, 保留: 0 個 0B/582kB のアーカイブを取得する必要があります。 展開後に 1324kB のディスク容量が追加消費されます。 続行しますか? [Y/n]y ← y応答 変更を適用しています... 準備中... ########################################### [100%] 1:thread ########################################### [ 33%] 2:expect ########################################### [ 66%] 3:courier-authlib ########################################### [100%] 完了当サイトよりcourier-imapと、dracdをDL後にインストール # rpm -Uhv dracd-1.12-0vl4courier.i386.rpm # rpm -Uhv courier-imap-4.0.3-0vl1drac.i386.rpm portmapが立ち上がっていない場合は立ち上げます。 # /etc/rc.d/init.d/portmap start dracdを立ち上げます。 # /etc/rc.d/init.d/dracd start courier-imapを立ち上げます。 # /etc/rc.d/init.d/courier-imap start Starting Courier-IMAP server: imap imap-ssl pop3 pop3-ssl courier-authlibを立ち上げます。(※ courier-imap4系のみ) # /etc/rc.d/init.d/courier-authlib start Starting Courier authentication services: authdaemond |
これだけの設定で、すでにPbSができるようになっているはずです。
| POP before SMTP(PbS)のテスト |
dracdがうまく動いているかチェックする # ps axw |grep drac /usr/sbin/rpc.dracd -i -e 5 これがあったらdracdは動いています。 $ db_dump -p /etc/mail/dracd.db ※db_dumpコマンドが使えない場合の対処法はこちら VERSION=3 format=print type=hash HEADER=END DATA=END このように表示されると思います。 $ /usr/sbin/testdrac localhost 1.2.3.4 (dracのホストと許可するIPアドレスを与える) もう一度以下のコマンドを打ってみます $ db_dump -p /etc/mail/dracd.db VERSION=3 format=print type=hash h_nelem=1 HEADER=END 1.2.3.4 ←IPが追加されているのを確認 1049726783,allow,RELAYCLIENT DATA=END このようにリレーホストが追加されているのを確認して下さい。 5分たってからもう一度実行します。 $ db_dump -p /etc/mail/dracd.db 追加されたIPがなくなっているのを確認して下さい。 ここまでできたら dracの動作は問題ありません。 POP認証が成功した場合に、dracに追加されているか確認する まず、テストするユーザー宛にメールを送信します。 # mail ユーザー名 ← テストユーザーにメール送信 Subject: test ← 題名を入力後「Enter」 本文(テスト) ← 本文を入力後「Enter」 . ← 「.」を入力後「Enter」 Cc: ← 「Enter」 メールを受信すると/home/ユーザー名/Maildir の中に cur/new/tmp の3種類のディレクトリが作製されると思います。 # ls -l /home/ユーザー名/Maildir/ ← cur、new、 tmp の3種類のディレクトリを確認 上記ディレクトリを確認したら telnetで110番ポートに接続してPOP認証を行います。 $ telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK Hello there. USER xxxxxxx ←xxxの部分は貴方のユーザー名 +OK Password required. PASS ****** ←****の部分は貴方のパスワード +OK logged in. quit +OK Bye-bye. Connection closed by foreign host. OK logged in.が出たらPOPの認証はできています。 dracに追加されているか確認します。 $ db_dump -p /etc/mail/dracd.db VERSION=3 format=print type=hash h_nelem=1 HEADER=END 127.0.0.1 ←追加されているのを確認 1049727481,allow,RELAYCLIENT DATA=END 追加されていたらOKです。 |
POP使用の場合は110番ポート、IMAP使用の場合は143番ポートを使用します。
まずルータの設定で25番ポート、110番(POPの場合)または143番(IMAPの場合)ポートを空けます。
次にここのサイトでポートがきちんと空いているかチェックします。
| リレーを許可する時間を調整する |
/usr/sbin/rc.dracd を編集します。
初期値は/usr/sbin/rpc.dracd -i -e 5 &
で5分に設定しています。
例として
/usr/sbin/rpc.dracd -i -e 10 &
とすると、10分でリレーをふさぐ様になります。
Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.