#contents()
*** 初期設定 [#q7b6c769]
- &ref(main.cf); asof 20060905
- &ref(master.cf); asof 2006090
*** munakata@hmuna → munakata.hisao@hmuna.com アドレス自動変換 [#qcc2d5be]
- postfix 標準機能である canonical アドレスマップを利用する
-- /etc/postfix/canonical の編集

 #
 # 2006-9-6 muna : ( munakata@hmuna.com | stored_mail@hmuna.com ) -> munakata.hisao@renesas.com
 # 
 
 munakata@hmuna.com              munakata.hisao@renesas.com
 stored_mail@hmuna.com          munakata.hisao@renesas.com

-- canonical maps  の有功化

 [root@spirit ~]# postmap /etc/postfix/canonical
 [root@spirit ~]# service postfix restart
 Shutting down postfix:                                     [  OK  ]
 Starting postfix:                                          [  OK  ]
 
 [root@spirit ~]# postconf | grep canonical_maps
 canonical_maps = hash:/etc/postfix/canonical
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains 
                       $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains 
                       $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps 
            $transport_maps $mynetworks
 recipient_canonical_maps =
 sender_canonical_maps =
- /var/log/maillog でアドレス変換が働いていることを確認 (外部には munakata@hmuna.com は流出しなくなった )

 Sep  6 07:53:10 spirit postfix/smtp[11188]: 0B7B5F75553: 
 to=<munakata.hisao@renesas.com>, orig_to=<munakata@hmuna.com>, 
 relay=127.0.0.1[127.0.0.1], delay=3, status=sent (250 2.6.0 Ok, id=09093-10, from MTA([127.0.0.1]:10025): 250 Ok: queued as CE109F75559)
*** サイズの大きな(1Mバイト以上 程度)添付ファイルのついたメールを受信すると fetchmail の転送が止まる問題が発生 (重大欠陥) [#m9a9c89b]
- fetchmaillog でエラーの状況を見ると.... ⇒ &color(red){header情報が不正で 300秒のタイムアウト};をしたと言っている

    1279 fetchmail: No mail for munakata at owa.hsdv.com
    1279 fetchmail: 1 message for munakata at owa.hsdv.com.
    1280 fetchmail: reading message munakata@ns02.hsdv.com:1 of 1 (816 header octets) fetchmail: incorrect header line found while scanning headers
    1281 fetchmail: timeout after 300 seconds.
    1282 fetchmail: socket error while fetching from owa.hsdv.com
    1283 fetchmail: Query status=2 (SOCKET)
    1284 fetchmail: 2 messages for munakata at owa.hsdv.com.
    1285 fetchmail: reading message munakata@ns02.hsdv.com:1 of 2 (816 header octets) fetchmail: incorrect header line found while scanning headers
    1286 fetchmail: timeout after 300 seconds.
    1287 fetchmail: socket error while fetching from owa.hsdv.com
    1288 fetchmail: Query status=2 (SOCKET)
    1289 fetchmail: 3 messages for munakata at owa.hsdv.com.
    1290 fetchmail: reading message munakata@ns02.hsdv.com:1 of 3 (816 header octets) fetchmail: incorrect header line found while scanning headers
    1291 fetchmail: timeout after 300 seconds.
    1292 fetchmail: socket error while fetching from owa.hsdv.com
    1293 fetchmail: Query status=2 (SOCKET)
- fetchmail の問題(エラーの誤検出) に原因があると想定し &color(red){fetchmail を最新 (=6.3.4) に更新した};
-- [[現在の fetchmail 公式サイト:http://fetchmail.berlios.de/]] から &ref(fetchmail-6[1].3.4.tar.bz2,center,fatchmail -6.3.4);  をダウンロードしてビルド、インストール

 [root@spirit fetchmail-6.3.4]# ./configure --with-ssl
 [root@spirit fetchmail-6.3.4]# make
 [root@spirit fetchmail-6.3.4]# make install

*** fetchmail  の設定  (ver2.0  2006-10) [#aa3ff7a1]
- fetxhmail ( 6.3.4 ) ) の設定は /root/.fetchmail に集約した ⇒ &ref(.fetchmailrc,center,/root/.fetchmailrc);

 [root@spirit ~]# cat /root/.fetchmailrc
 set postmaster server_admin
 set no bouncemail
 set logfile "/home/munakata/log/fetchmaillog"
 
 defaults
         protocol imap
         port 993
         fetchall
         flush
         no keep
         limit 10000000
         no limitflush
         no mimedecode
         smtphost localhost
 
         ssl
 #       sslcertpath     /usr/local/certs/
 #       sslproto        ssl23
 #       sslfingerprint  "EF:90:AA:A0:85:12:1F:B4:D1:E8:2A:1C:23:C2:F8:2E"
 
 poll owa.hsdv.com
         user munakata
         password freedman
         is munakata here ssl
 
 ##poll 172.26.0.227 user b1600471 password freedman is munakata here
- fetchmail 設定の確認

 [root@spirit ~]# fetchmail -V
 fetchmail: 警告: root アカウントでの実行はお薦めできません。
 fetchmail リリース 6.3.4 +SSL+HESIOD+NLS.
 
 Copyright (C) 2002, 2003 Eric S. Raymond
 Copyright (C) 2004 Matthias Andree, Eric S. Raymond, Rob F. Funk, Graham Wilson
 Copyright (C) 2005-2006 Matthias Andree, Sunil Shetye
 Fetchmail はまったくの無保証です。これはフリーソフトウェアで、
 いくつかの条件を満たせば再配布は大歓迎です。
 詳しくは、COPYING ファイルを見てください。
 
 Fallback MDA: (none)
 Linux spirit.hmuna.com 2.6.9-42.0.2.EL #1 Tue Aug 22 23:56:05 CDT 2006 i686 i686 i386 GNU/Linux
 コマンドライン及び/root/.fetchmailrcよりオプションを設定します。
 ログファイルは /home/munakata/log/fetchmaillog です。
 ID ファイルは /root/.fetchids です。
 Fetchmail はログファイル中にも進行状況を示す . を書き込みます。
 Fetchmail は誤った宛先の書かれたメッセージを server_admin に転送します。
 Fetchmail は postmaster 宛にエラーメールを送信します。
 アカウント munakata@owa.hsdv.com でのオプションです。
   サーバの本名は owa.hsdv.com です。
   IMAP プロトコルを利用します。 (993 サービスを利用します).
   利用可能な全ての認証方式を試みます。
   SSL による暗号化通信が行われます。
   サーバの応答制限時間は 300 秒です。 (デフォルト)。
   デフォルトのメールボックスが選択されました。
   すべてのメッセージを取得します。 (--all on)
   取得したメッセージはサーバに保持しません (--keep off)
   古いメッセージは取得の前に消去されます。 (--flush on)
   容量超過したメッセージは取得の前に消去されます。 (--limitflush on)
   server-local アドレスへの書き換えを行います。 (--norewrite off)
   改行記号の除去を行いません。 (stripcr off)
   改行記号の追加を行いません。 (forcecr off)
   Content-Transfer-Encoding の変換を行います。 (pass8bits off)
   MIME のデコードを行いません。 (mimedecode off)
   サーバアクセス後の待機を行いません。 (idle off)
   記述のある Status 行を保持します。 (dropstatus off)
   Delivered-To 行を破棄します。 (dropdelivered off)
   メッセージの大きさの最大 10000000 バイトに制限されます。 (--limit 10000000)
   取得できるメッセージのサイズは 100 に制限されます。(--fetchsizelimit 100)
 3 回 (4 接続のうち) UID の二分木検索を行います。(--fastuidl 4)
   受信したメッセージは SMTP によって次に示すサーバへ転送されます : localhost
   `single-drop' モード: 1 個の localname が存在します。
   このホストからの UID は記録されていません。
- fetchmail のデーモンモードでの起動

 [root@spirit fetchmail-6.3.4]# fetchmail -d 300 -t 120
 fetchmail: 警告: root アカウントでの実行はお薦めできません。
- デーモンモードでは データ取得間隔=2分、 一回の接続制限時間(タイムアウト)=5分とした
- この設定では、もし一回の接続で2分以上時間がかかっても5分までは正常に受信を続けることができる
- 以前 cron で毎回の受信を起動設定していた時には、前の fetchmail が起動中に次の起動が重なりエラーになっていたがこの問題の対策にもなっている
- 実行時のログ確認 (ssl 関係でエラーが出ているが動作は正常)

 [root@spirit ~]# tail -f -n 40 /home/munakata/log/fetchmaillog
 fetchmail: fetchmail 6.3.4 デーモンを動作開始します。
 fetchmail: サーバ証明書検証エラー: unable to get local issuer certificate
 fetchmail: サーバ証明書検証エラー: certificate not trusted
 fetchmail: サーバ証明書検証エラー: unable to verify the first certificate
 fetchmail: 2006年10月09日 00時19分21秒 に休眠状態となりました。
-- &color(red){sslの自己認証局が信頼できない.... と言っている};
-- &color(red){ここで問題を指摘された自己認証局が owa.hsdv.com か mail.hmuna.com かは判定出来ていない};
*** postfix のサイズ制限設定 [#o3ec1c3a]
- main.cf にメッセージサイズ制限、メールボックスサイズ制限を書く

 # muna re-define size limit ( message 10M, mailbox per file=512M )
 # 但し /Maildir を使っているので mailbox_size_limit の設定は意味がないが
 mailbox_size_limit = 512000000
 message_size_limit =  10240000
- 設定の確認

 [root@spirit postfix]# postconf | grep size
 berkeley_db_create_buffer_size = 16777216
 berkeley_db_read_buffer_size = 131072
 body_checks_size_limit = 51200
 bounce_size_limit = 50000 ( 50k)
 header_size_limit = 102400 (100k)
 mailbox_size_limit = 512000000 (512M)
 message_size_limit = 10240000 ( 10M)
- &color(red){⇒何れにしても 5M 程度の添付ファイルでバウンスはしないはずである!};
*** procmail レシピ [#d66ce8cf]
- &ref(procmailrc_munakata_20061110);
- &ref(procmailrc_public_20061110);
*** postfix のサイズ制限と fetchmail のサイズ超過メールの削除を指定して daemon として fetchmail を起動した [#y10e86fa]

- ログ ( fetchmail のサイズ制限が 1M の設定時 )

 fetchmail: 4 通のメッセージが アカウント munakata , サーバ owa.hsdv.com 宛に届いています.
 fetchmail: munakata@ns02.hsdv.com 宛に届いた 1 番目のメッセージ (2449133 バイト) を読み飛ばしています。 (容量超過) サーバからメッセージを削除しました。
 fetchmail: munakata@ns02.hsdv.com 宛に届いた 2 番目のメッセージ(全部で 4 通)を読み込んでいます (986 バイト (ヘッダ) ) fetchmail:  (4914 バイト (本体) )fetchmail:  サーバからメッセ ージを削除しました。
 fetchmail: munakata@ns02.hsdv.com 宛に届いた 3 番目のメッセージ (8900697 バイト) を読み飛ばしています。 (容量超過) サーバからメッセージを削除しました。
 fetchmail: munakata@ns02.hsdv.com 宛に届いた 4 番目のメッセージ(全部で 4 通)を読み込んでいます (821 バイト (ヘッダ) ) fetchmail:  (765 バイト (本体) )fetchmail:  サーバからメッセージを削除しました。
 fetchmail: 2006年10月07日 16時22分56秒 に休眠状態となりました。

- ログ ( fetchmail のサイズ制限が 10M の設定時 )

 fetchmail: munakata@ns02.hsdv.com 宛に届いた 1 番目のメッセージ(全部で 1 通)を読み込んでいます (699 バイト (ヘッダ) ) fetchmail:  (6260571 バイト (本体) )fetchmail: 500 秒間待機し ましたが制限時間を超過しました。
 fetchmail: socketエラーが munakata@owa.hsdv.com よりメールを受信している最中に発生しました。
 fetchmail: Query status=2 (SOCKET)
 fetchmail: 2006年10月07日 16時49分50秒 に休眠状態となりました。
 fetchmail: 2006年10月07日 16時51分50秒 に動作を再開しました。
 fetchmail: サーバ証明書検証エラー: unable to get local issuer certificate
 fetchmail: サーバ証明書検証エラー: certificate not trusted
 fetchmail: サーバ証明書検証エラー: unable to verify the first certificate
 fetchmail: 1 通のメッセージが アカウント munakata , サーバ owa.hsdv.com 宛に届いています.
 fetchmail: munakata@ns02.hsdv.com 宛に届いた 1 番目のメッセージ(全部で 1 通)を読み込んでいます (699 バイト (ヘッダ) ) fetchmail:  (6260571 バイト (本体) )fetchmail:  サーバからメッセージを削除しました。
 fetchmail: 2006年10月07日 16時52分03秒 に休眠状態となりました。

- &color(red){何れにしても大きな添付ファイルを受信しても fetchmail のメール転送が停止してしまう傷害は発生しなくなった};
-- 大きな添付ファイルのついたメールの後に通常のメールを送信した場合、正常に通常のメールが転送されていることを確認した

 fetchmail: 2006年10月09日 11時56分49秒 に動作を再開しました。
 fetchmail: サーバ証明書検証エラー: unable to get local issuer certificate
 fetchmail: サーバ証明書検証エラー: certificate not trusted
 fetchmail: サーバ証明書検証エラー: unable to verify the first certificate
 fetchmail: 3 通のメッセージが アカウント munakata , サーバ owa.hsdv.com 宛に届いています.
 fetchmail: munakata@ns02.hsdv.com 宛に届いた 1 番目のメッセージ (8900075 バイト) を読み飛ばしています。 (容量超過) サーバからメッセージを削除し ませんでした。
 fetchmail: munakata@ns02.hsdv.com 宛に届いた 2 番目のメッセージ (8901431 バイト) を読み飛ばしています。 (容量超過) サーバからメッセージを削除しませんでした。
 fetchmail: munakata@ns02.hsdv.com 宛に届いた 3 番目のメッセージ(全部で 3 通)を読み込んでいます (894 バイト (ヘッダ) ) fetchmail:  (772 バイト  (本体) )fetchmail:  サーバからメッセージを削除しました。
 fetchmail: 2006年10月09日 11時56分50秒 に休眠状態となりました。
- サイズ超過メールを受信して、メールを自動的に削除した場合は、オリジナルの宛先向けに警告メールが届いた ⇒ 誰からのメールかはわからないが....
 件名:Fetchmail サイズ超過メッセージ
 差出人:FETCHMAIL-DAEMON@spirit.hmuna.com
 本 文:以下に示す容量を超過したメッセージはメールサーバ owa.hsdv.com アカウント munakata で削除されました :
         1 番目のメッセージ(6261786 bytes の長さがあります)は削除されました。          
- サイズ超過メールを受信して、メール転送を保留した場合は、オリジナルの宛先向けにサイズ超過メールが残っているとの警告メールが届く
 件名:Fetchmail サイズ超過メッセージ
 差出人:FETCHMAIL-DAEMON@spirit.hmuna.com
 本 文:以下に示す容量を超過したメッセージがメールサーバ owa.hsdv.com アカウント munakata に残っています :
       1 番目のメッセージ(8900075 バイト の長さがあります)は読み飛ばされました。
*** fetchmail の自動起動の設定 [#n3af8e64]
- 起動スクリプト( /etc/init.d/fetchmail )・・・ /home 下の各ユーザーの .fetchmail を自動起動する

 [root@spirit ~]# cat /etc/init.d/fetchmail
 # chkconfig: 345 99 20
 # 
 # description: Fetchmail auto start script
 
 # Source function library.
 . /etc/rc.d/init.d/functions
 
 # See how we were called.
 case "$1" in
   start)
         for user in `ls /home/`
         do
                 if [ -f /home/$user/.fetchmailrc ]; then
                         echo "fetchmail for $user starting..."
                         su $user -c "/usr/local/bin/fetchmail --daemon 120 --timeout 600"
                 fi
         done
         ;;
   stop)
         # Stop daemons.
         for user in `ls /home/`
         do
                 if [ -f /home/$user/.fetchmailrc ]; then
                         echo "fetchmail for $user stoping..."
                         su $user -c "/usr/local/bin/fetchmail --quit"
                 fi
         done
         ;;
   *)
         echo "Usage: $0 {start|stop}"
         exit 1
 esac
 exit 0

- 自動起動の設定

 [root@spirit ~]# chkconfig --add fetchmail
 [root@spirit ~]# chkconfig --list | grep fetch
 fetchmail       0:off   1:off   2:off   3:on    4:on    5:on    6:off

*** [[/etc/postfix/postconf (コマンド実行結果)>Cent_Postconf]] [#pae8b6e0]
- &ref(postconf_20060905.txt);
*** postfix 2.3.6 の導入 (2006-1-5) [#s940412a]
- [[transport が見つからない問題>Postfix_Trobleshoot_1]] の対策の一環として &color(RED){2.0 系(=Cent OS 標準)⇒ 2.3.6にバージョンアップした};
- Postfix 2.2 系から TLS が標準サポートされるようになったことが 2.2系採用の最大の同期
- 2.0 環境は /etc/postfix_orig として残してある。 ⇒ &ref(postfix_orig.tgz);
- 2.3 環境はまだバイナリーパッケージがないので &ref(postfix-2.3.6.tar.gz,center,ソース); から導入した
- ソースからビルドする際に TLS、SASL、LDAP などはオプションで指定しないと組み込まれない (ので TLS と SASL を指定した)
- 2.3 からは SASL 認証に従来使われていた Cyrus SASL 以外に Dovcot SASL を利用できる &color(red){⇒ 今回は Dovcot SASL を利用することにする};

- ソースのビルド方法 ⇒ 最初に TLS、SASL を組み込むために(configure ではなく)make で Makefile を生成する点がポイント

 [root@spirit postfix-2.3.6]# make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\" "-DUSE_TLS"' AUXLIBS="-lssl -lcrypto"
 [root@spirit postfix-2.3.6]# make
 [root@spirit postfix-2.3.6]# make install  <------ インストール場所は全てデフォルトとした

-- make Makefile を繰り返した場合でも環境設定ファイル (=/etc/main.cf、/etc/master.cf など)は上書きされない
-- 2.0 環境では gnome の MTA セレクタが使えるように sendmail = sendmail.postfix としてある部分を変更した(しないとエラーになる)
- main.cf、master.cf を Postfix 2.3.6 キュメントに従って編集する (一部 2.0系から変更されている)
-- &ref(main.cf_asof_20070105);
-- &ref(master.cf_asof_20070105);

*** [[Dovecot 1.0RC15 の導入 (2006-1-5) :http://www.dovecot.org/]] [#kfe765df]
- Postfix 2.3.6 の SMTP Auth 認証に Dovcot SASL を指定したが、Cent 標準の Dovcot(=0.99) では Dovecot SASL が無かった
- /etc/dovecot.conf を &ref(dovecot.conf_099,center,バックアップ); してから yum remove で一旦標準 Dovecot 環境を削除した
- ソースから Dovecot をビルドした (特にオプション指定などはなく configure → make → make install で完了)
- ソースからインストールした場合には環境設定 (=dovecot.conf) は /usr/local/etc の下にできる
- 環境設定の内容は 0.99 から変更されている部分があるので、雛形(=/usr/local/etc/dovecot-example) から修正して作成
- この際 Postfix ドキュメントに指定された方法で Dovecot SASL の設定を反映した
-- &ref(dovecot.conf_asof_20070105);

- マニュアルにはimap/imaps/pop3/pop3s を別々にスクリプト起動する方法が推奨されているが、CentOS 標準の起動スクリプト(=/etc/init.d/dovecot) を参考にまとめてマスタープログラムが起動するようにした
-- &ref(dovecot_startscript_asof_20070105);
-- 起動直後のプロセス起動状態 (imap はログインあり、pop3 は待機状態 )
 [root@spirit postfix-2.3.6]# ps aux | grep "pop3\|imap\|dovecot"
 root      5533  0.0  0.0  1868  580 ?        Ss   14:39   0:00 /usr/local/sbin/dovecot <--- マスタープロセス
 root      5535  0.0  0.0  2956  976 ?        S    14:39   0:00 dovecot-auth <---- 認証用プロセス
 dovecot   6032  0.0  0.0  4184 1660 ?        S    16:32   0:00 imap-login
 dovecot   6040  0.0  0.0  4428 1440 ?        S    16:32   0:00 imap-login
 dovecot   6055  0.0  0.0  5172 1664 ?        S    16:36   0:00 imap-login
 503       6092  0.0  0.0  7520 1836 ?        S    16:42   0:00 imap
 dovecot   6093  0.0  0.0  4616 1664 ?        S    16:42   0:00 imap-login
 503       6108  0.0  0.0  6764 1836 ?        S    16:50   0:00 imap
 dovecot   6109  0.0  0.0  4208 1660 ?        S    16:50   0:00 imap-login
 munakata 10569  0.0  0.0  7204 1848 ?        S    17:13   0:00 imap
 dovecot  10570  0.0  0.0  4972 1440 ?        S    17:13   0:00 imap-login
 dovecot  10584  0.0  0.0  5508 1440 ?        S    17:14   0:00 imap-login
 munakata 10586  0.0  0.0  7356 1868 ?        S    17:14   0:00 imap     <---- ログイン中プロセス
 dovecot  10703  0.0  0.0  4024 1436 ?        S    17:31   0:00 pop3-login  <---  ログイン待ちプロセス
 dovecot  10751  0.0  0.0  4532 1432 ?        S    17:46   0:00 pop3-login
 dovecot  10753  0.0  0.0  4876 1432 ?        S    17:46   0:00 pop3-login
 
-- ソースからビルドして起動したときに dovecot というユーザーがないといってエラーになったので、ユーザを追加した
- &color(red){最終的にサーバーとして imaps[munakata, public_mail, stored_mail]と pop[headline, dtv_rec] を動かしている};

*** headerchecks の設定 [#aeb1578a]
- 上記設定で postfix + SMTP Auth + TLS の環境が立ち上がったので、懸案であった [[ヘッダー内のローカルネットワーク情報の削除>Cent_Postfilter]] の設定を付加


*** クライアントの設定 [#x683eccb]
- SMTP Auth でユーザー認証が通ればメールリレーを許可する設定なので、送信メールにはログインが必要
- 更に SMTP 認証時には プレーンテキストでの認証を拒否する設定にしているので SSL or TLS で接続させる必要がある
- 現状 IMAP メール受信には SSL を利用、POP には TLS を利用している 
-- IMAP サーバーに TLS で接続できないのは Dovecot がサポートしていないから ??? ・・・・ そんなはずはないが

*** 参考 URL [#z75c11c6]
- [[fetchmail project home:http://fetchmail.berlios.de/fetchmail]]
- [[fetchmail project man ページ:http://fetchmail.berlios.de/fetchmail-man.html]]
- [[amavisd-new settings for postfix (重要):http://www.ijs.si/software/amavisd/README.postfix.txt]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS