#contents
* winmail.dat 対策 [#ba1207cd]
//** http://www.saga-ed.jp/workshop/edq01449/winmail.htm [#ge2010d0]
*** Winmail Opener [#kb783729]
- http://www.eolsoft.com/freeware/winmail_opener/
- &ref(winmail_opener.exe);
*** TNEF [#o2f7d39b]
- &ref(fentun.exe,center, Fentun プログラム);
- http://www.fentun.com/ 
- http://zfacts.com/p/64.html 
*** WM Decorde [#z7e7fb4d]
- &ref(WMDecode.exe,center, WM Decordeプログラム);
-  http://www.biblet.freeserve.co.uk/ 
* MTA(SMTP)の導入 [#lde14ee8]
** postfix の導入1(FC2 のdefault環境) [#o4e16b35]
*** インストール済パッケージの確認 [#oc8ef3c3]

 [root@power root]# rpm -q cyrus-sasl
 cyrus-sasl-2.1.18-2.2
 [root@power root]# rpm -q postfix
 postfix-2.0.18-4
*** FC2 の初期状態では sendmail が有効になっているので、postfix に切替る [#q20e537e]
- sendmail の停止
 [root@power root]# /etc/init.d/sendmail status
 sendmail (pid 2209 2200) を実行中...
 [root@power root]# /etc/init.d/sendmail stop
 sendmail を停止中:                                         [  OK  ]
 sm-clientを停止中:                                         [  OK  ]
- MTA を postfix に切替える
 [root@power root]# /usr/sbin/alternatives --config mta
  
 There are 2 programs which provide 'mta'.
  
   Selection    Command
 -----------------------------------------------
 *+ 1           /usr/sbin/sendmail.sendmail
    2           /usr/sbin/sendmail.postfix
  
 Enter to keep the current selection[+], or type selection number:2
*** /etc/postfix/main.cf の設定 (必要な箇所だけ変更) [#jf374c1e]
- myhostname などの設定
 60 # INTERNET HOST AND DOMAIN NAMES
 61 #
 62 # The myhostname parameter specifies the internet hostname of this
 63 # mail system. The default is to use the fully-qualified domain name
 64 # from gethostname(). $myhostname is used as a default value for many
 65 # other configuration parameters.
 66 #
 67 #myhostname = host.domain.tld
 68 #myhostname = virtual.domain.tld
 69 myhostname = webmail.hmuna.com
-- hmuna.com ドメイン内に メール転送エンジン(MTA) が複数存在することは問題ない
-- MTA の名前を区別するために webmail.hmuna.com という hostname をつけた。
-- リレーの設定をしていないので、外部に直接メールを送れるが外部からは受け取れない状態
- mynetworks の設定
 # Alternatively, you can specify the mynetworks list by hand, in
 # which case Postfix ignores the mynetworks_style setting.
 #
 # Specify an explicit list of network/netmask patterns, where the
 # mask specifies the number of bits in the network part of a host
 # address.
 #
 # You can also specify the absolute pathname of a pattern file instead
 # of listing the patterns here. Specify type:table for table-based lookups
 # (the value on the table right-hand side is not used).
 #
 #mynetworks = 168.100.189.0/28, 127.0.0.0/8
 #mynetworks = $config_directory/mynetworks
 #mynetworks = hash:/etc/postfix/network_table
 
 # muna only defines mynetworks including office mail system
 mynetworks = 202.221.8.114/32, 192.168.1.0/24, 127.0.0.0/8
- MailDir 方式の設定
 # DELIVERY TO MAILBOX
 #
 # The home_mailbox parameter specifies the optional pathname of a
 # mailbox file relative to a user's home directory. The default
 # mailbox file is /var/spool/mail/user or /var/mail/user.  Specify
 # "Maildir/" for qmail-style delivery (the / is required).
 #
 # muna adopt Maildir style expecting Courier-IMAP
 #
 #home_mailbox = Mailbox
 home_mailbox = Maildir/
*** 各ユーザーの MailDir の作成 [#ic786a82]
- MailDirMake を使って各ユーザーのホームディレクトリに MailDir を作成すると書かれているが、FC2 には maildirmake がないことがわかった。
- 別の web http://poinca.ikezoe.net/info/postfix_install.html に最初のアクセス時に自動的に出来るとも書いているページを見つけたので、とりあえず munakata、headline(cnnatlanta)、admin(administrator)のユーザ登録だけを行っておく。
*** postfix だけを利用したメール転送の実験 [#t97eb2d0]
- コマンドラインから sendmail (=postfix の互換コマンド)を利用してメールを送る方法
 sendmail -s "mail titile" munakata (return)
 Mail message
 ( ctrl+d )
 cc: ( return )
- 実際に root から munakata にメールを転送してみる
 [root@power root]# mail -s "postfix local mail test" munakata
 This is inside server mail trans test
 Cc:
 [root@power root]#
- /var/log/maillog を確認する ---- メールが正常に送られている。
 Jan  1 09:30:59 power postfix/pickup[6155]: 71C8A894069: uid=0 from=<root>
 Jan  1 09:30:59 power postfix/cleanup[6221]: 71C8A894069: 
  message-id=<20050101003059.71C8A894069@webmail.hmuna.com>
 Jan  1 09:30:59 power postfix/nqmgr[3304]: 71C8A894069:
  from=<root@webmail.hmuna.com>, size=362, nrcpt=1 (queue active)
 Jan  1 09:30:59 power postfix/local[6223]: 71C8A894069:
  to=<munakata@webmail.hmuna.com>, orig_to=<munakata>, relay=local, delay=0, status=sent (maildir)
- /home/munakata の下には Maildir が自動的に作られた
*** 課題1:/var/spool/postfix のパーミションの修正を行った [#e63f9fcc]
- root → to:munakata cc:admin のメールを送ったところ admin (一般ユーザあて)のメールがエラーになった(/var/log/maillog)
 Jan  1 01:02:16 power postfix/pickup[3303]: 7634389405E: uid=0 from=<root>
 Jan  1 01:02:16 power postfix/cleanup[3688]:
  7634389405E:messageid=<20041231160216.7634389405E@webmail.hmuna.com>
 Jan  1 01:02:16 power postfix/nqmgr[3304]:7634389405E:from=
 <root@webmail.hmuna.com>, size=335, nrcpt=1 (queue active)
 Jan  1 01:02:16 power postfix/local3690]:7634389405E:
  to=<postfix@webmail.hmuna.com>, orig_to=<admin>, relay=local, delay=0,
  status=bounced (maildir delivery failed:create/var/spool/postfix/Maildir/
  tmp/1104508936.P3690.power.hmuna.com: Permission denied)
 Jan  1 01:02:16 power postfix/cleanup[3688]: 7AF8E89405F:
  messageid=<20041231160216.7AF8E89405F@webmail.hmuna.com>
 Jan  1 01:02:16 power postfix/nqmgr[3304]: 7AF8E89405F: from=<>,
  size=2123,nrcpt=1 (queue active)
 Jan  1 01:02:16 power postfix/local[3690]: 7AF8E89405F:
  to=<postfix@webmail.hmuna.com>, orig_to=<root@webmail.hmuna.com>, 
  relay=local, delay=0, status=bounced  (maildir delivery failed: create
  /var/spool/postfix/Maildir/tmp/1104508936.P3690.power.hmuna.com: Permission denied)
-- root → admin あてのメールが届かない理由があるようだ (postfix の設定とは別の問題と思われる、admin というユーザー名が良くない ?)
-- 不達の連絡を root に返そうとしたところ、root 用の Maildir の作成ができなかったようだ
-- 何故か root の Maildir は /root の下ではなく、/var/spool/postfix の下に出来るらしい。 よく見ると root あてではなく postfix あてのメールなのかもしれない
-- /var/spool のディレクトリを見ると、postfix ディレクトリは root.root となっている。
-- %%''COLOR(RED){/var/spool/postfix ディレクトイリのオーナーを他にならって postfix.postfix と変更する。}''%%
 [root@power root]# chown postfix.postfix /var/spool/postfix/
 [root@power root]# ls -l /var/spool/
 合計 64
 drwxr-xr-x   2 root    root    4096 12月 24 20:30 anacron
 drwx------   3 daemon  daemon  4096 12月 24 16:55 at
 drwxrwx---   2 smmsp   smmsp   4096 12月 31 04:03 clientmqueue
 drwx------   2 root    root    4096 12月 24 21:15 cron
 drwx--x---   3 root    sys     4096 12月 22 23:01 cups
 drwxr-xr-x   2 root    root    4096  3月 12  2004 lpd
 drwxrwxr-x   2 root    mail    4096  1月  1 00:40 mail
 drwxr-xr-x   3 root    root    4096 12月 24 17:04 mailman
 drwx------   2 root    mail    4096 12月 31 04:03 mqueue
 drwxr-xr-x  15 postfix postfix 4096  1月  1 02:18 postfix
 drwxr-xr-x   2 rpm     rpm     4096 12月 29 05:17 repackage
 drwxrwxrwt   2 root    root    4096 12月 18 12:42 samba
 drwxr-x---   2 squid   squid   4096 10月 13 02:42 squid
 drwxr-xr-x   3 root    root    4096 11月 21 18:26 squirrelmail
 drwxr-xr-x   2 root    root    4096  5月 12  2004 up2date
 drwxrwxrwt   2 root    root    4096  3月  3  2004 vbox
-- postfix ディレクトリーのオーナーを変更したら正常にメールが通った
 Jan  1 02:18:30 power postfix/pickup[3987]: D3C0E89405F: uid=0 from=<root>
 Jan  1 02:18:30 power postfix/cleanup[4019]: D3C0E89405F:
  message-id=<20041231171830.D3C0E89405F@webmail.hmuna.com>
 Jan  1 02:18:30 power postfix/nqmgr[3304]: D3C0E89405F:
  from=<root@webmail.hmuna.com>, size=392, nrcpt=2 (queue active)
 Jan  1 02:18:30 power postfix/local[4021]: D3C0E89405F:
  to=<postfix@webmail.hmuna.com>, orig_to=<admin>, relay=local, delay=0, status=sent (maildir)
 Jan  1 02:18:30 power postfix/local[4022]: D3C0E89405F:
  to=<postfix@webmail.hmuna.com>, orig_to=<root>, relay=local, delay=0, status=sent (maildir)
-- ''COLOR(RED){上記の変更を行ってから /var/log/maillog に以下のエラーが出ていることを確認}''
 Jan  1 17:01:10 power postfix/postfix-script: warning: not owned by root: /var/spool/postfix
-- /var/spool/postfix のオーナーを root に戻して、その配下のディレクトリーのパーミションを postfix.root とした。
 [root@power certs]# ls -l /var/spool/
 合計 64
 drwxr-xr-x   2 root   root   4096 12月 24 20:30 anacron
 drwx------   3 daemon daemon 4096 12月 24 16:55 at
 drwxrwx---   2 smmsp  smmsp  4096 12月 31 04:03 clientmqueue
 drwx------   2 root   root   4096 12月 24 21:15 cron
 drwx--x---   3 root   sys    4096 12月 22 23:01 cups
 drwxr-xr-x   2 root   root   4096  3月 12  2004 lpd
 drwxrwxr-x   2 root   mail   4096  1月  1 10:36 mail
 drwxr-xr-x   3 root   root   4096 12月 24 17:04 mailman
 drwx------   2 root   mail   4096 12月 31 04:03 mqueue
 drwxr-xr-x  17 root   root   4096  1月  2 02:09 postfix
 drwxr-xr-x   2 rpm    rpm    4096 12月 29 05:17 repackage
 drwxrwxrwt   2 root   root   4096 12月 18 12:42 samba
 drwxr-x---   2 squid  squid  4096 10月 13 02:42 squid
 drwxr-xr-x   3 root   root   4096 11月 21 18:26 squirrelmail
 drwxr-xr-x   2 root   root   4096  5月 12  2004 up2date
 drwxrwxrwt   2 root   root   4096  3月  3  2004 vbox
 
 [root@power certs]# ls -l /var/spool/postfix/
 合計 60
 drwx------  5 postfix root 4096  1月  1 02:18 Maildir
 drwx------  7 postfix root 4096  1月  2 04:02 active
 drwx------  3 postfix root 4096  1月  2 02:25 bounce
 drwx------  2 postfix root 4096  1月  1 22:44 corrupt
 drwx------  2 postfix root 4096  1月  1 22:44 defer
 drwx------  2 postfix root 4096  1月  1 22:44 deferred
 drwx------  2 postfix root 4096  1月  1 22:44 flush
 drwx------  2 postfix root 4096  1月  1 22:44 hold
 drwx------  7 postfix root 4096  1月  2 04:02 incoming
 drwx-wx---  2 postfix root 4096  1月  2 04:02 maildrop
 drwxr-xr-x  2 postfix root 4096  1月  2 02:25 pid
 drwx------  2 postfix root 4096  1月  2 02:21 private
 drwx--x---  2 postfix root 4096  1月  2 02:21 public
 drwx------  2 postfix root 4096  1月  1 22:44 saved
 drwx------  2 postfix root 4096  1月  2 02:09 trace
*** 再考 : root あてのメールが受信できない問題 [#e6651f35]

- /var/log/maillog のエラーメッセージ
 Nov  5 10:26:23 power postfix/local[3911]: 39B818940FA: 
 to=<root@hmuna.com>, relay=local, delay=0, status=bounced 
 (can't create user output file. Command output: procmail: Couldn't create "/var/mail/nobody" )

- 結論として procmail を利用したメールリレーを行っている場合には、root あてのメールは受信できないという仕様であることがわかった ⇒  http://www.postfix.org/faq.html#root

 Root's mail is delivered to nobody
 If you use procmail (or some other command) for local mail delivery, 
 Postfix  will not deliver mail as root. Instead, Postfix runs procmail 
 (or whatever) as nobody. Perhaps some day Wietse will trust Postfix 
 enough to run external commands as root. 
 
 Solution: just like you're not supposed to log in as root 
 (except for unusual conditions), you're not supposed to receive mail as root. 
 
 Create a mail alias for root that forwards mail to a real user. 
 
 /etc/aliases:
     root:       you
 
 Execute the command newaliases whenever you change the alias database. 
 On some systems the alias database is not in /etc/aliases. To find out
 the location for your system, execute the command postconf alias_maps. 

- これは procmail が root 権限で動作することの危険性に対する配慮からである
- システムが発行する root あてのメールを別のアカウント (=server_admin)に転送する設定を alian で行って回避する
- alias の設定をしてもうまく root あてのメールが server_admin に届かないので調査してみた ( 上の説明にある postconf alias_maps  を実行 )
 [root@power etc]# postconf alias_maps
 alias_maps = hash:/etc/postfix/aliases
- /etc/alias ではなく /etc/postfix/aliases に設定が必要であることが分かった

*** 課題1.5:パーミション関連 微調整 [#kec743ff]
- postfix バージョンアップ後の再起動でこんなエラーが出たので
 Jan  2 14:37:15 power postfix/postfix-script: warning: 
  not owned by group postdrop: /var/spool/postfix/public
 Jan  2 14:37:15 power postfix/postfix-script: 
  warning: not owned by group postdrop: /var/spool/postfix/maildrop
- こんな風にパーミションを変更した
 [root@power root]# chown postfix.postdrop /var/spool/postfix/public
 [root@power root]# chown postfix.postdrop /var/spool/postfix/maildrop
 
 [root@power root]# ls -l /var/spool/postfix/ 
 合計 60
 drwx------  5 postfix root     4096  1月  1 02:18 Maildir
 drwx------  7 postfix root     4096  1月  2 04:02 active
 drwx------  3 postfix root     4096  1月  2 02:25 bounce
 drwx------  2 postfix root     4096  1月  1 22:44 corrupt
 drwx------  2 postfix root     4096  1月  1 22:44 defer
 drwx------  2 postfix root     4096  1月  1 22:44 deferred
 drwx------  2 postfix root     4096  1月  1 22:44 flush
 drwx------  2 postfix root     4096  1月  1 22:44 hold
 drwx------  7 postfix root     4096  1月  2 04:02 incoming
 drwx-wx---  2 postfix postdrop 4096  1月  2 04:02 maildrop
 drwxr-xr-x  2 postfix root     4096  1月  2 02:25 pid
 drwx------  2 postfix root     4096  1月  2 14:37 private
 drwx--x---  2 postfix postdrop 4096  1月  2 14:37 public
 drwx------  2 postfix root     4096  1月  1 22:44 saved
 drwx------  2 postfix root     4096  1月  2 02:09 trace
*** 課題2:何故 admin ユーザだけは /home/admin の下に MailDir が出来ないのか? [#bd42c6f5]
- 上記の問題を解決したところ、メール転送自体でのエラーはなくなったが Maildir が作成されていない
- root → admin と root → munakata のメール転送ログを比較した
-- root → admin の転送
 Jan  1 10:11:52 power postfix/pickup[6155]: 53B00894069: uid=0 from=<root>
 Jan  1 10:11:52 power postfix/cleanup[6534]: 53B00894069:
   messageid=<20050101011152.53B00894069@webmail.hmuna.com>
 Jan  1 10:11:52 power postfix/nqmgr[3304]: 53B00894069:
  from=<root@webmail.hmuna.com>, 
 size=373, nrcpt=1 (queue active) 
Jan  1 10:11:52 power postfix/local[6536]: 53B00894069:
  to=<postfix@webmail.hmuna.com>, orig_to=<admin>, relay=local, delay=0,status=sent (maildir)
-- root → munakata の転送
 Jan  1 10:14:17 power postfix/pickup[6155]: 54C3489406C: uid=0 from=<root>
 Jan  1 10:14:17 power postfix/cleanup[6542]: 54C3489406C:
   messageid=<20050101011417.54C3489406C@webmail.hmuna.com>
 Jan  1 10:14:17 power postfix/nqmgr[3304]: 54C3489406C:
  from=<root@webmail.hmuna.com>, size=344, nrcpt=1 (queue active) 
 Jan  1 10:14:17 power postfix/local[6543]: 54C3489406C:
  to=<munakata@webmail.hmuna.com>, orig_to=<munakata>, relay=local, delay=0, status=sent (maildir)
- 最後の to= の宛先が異なるだけで他は同じ、何故 admin あては最後が postfix になるのか?
- よく分からないが、postfix のプリセットユーザーで admin が postfix の管理者として登録されていて、意図的に自分に返しているように見える (main.cf を見るべきだけど...)
- ''COLOR(RED){結論として、admin というユーザ名は混乱の元なので server_admin(server_admin) に変更した。 ちなみに manager では admin と同じことだった。}''
** postfix の導入2 (2.1.4-5 に更新) [#c9dd8d07]
- SMTP 認証(SMTP Auth+TLS)をサポートするために postfix バージョンアップした
- SMTP 経由でのメール送信がエラーになったいたために、以前からの懸案であった SMTP Auth の導入を決意したもの
- FC2 default の postfix でもできたのかもしれない(きっとできる)が、''COLOR(BLUE){[[パソコンおやじ:http://acorn.zive.net/~oyaji/mail2/smtp-auth-tls.htm]]}'' さんの纏めた手順に従って更新を行った
-- 今回とった方法はログイン時から TLS 化し、その後、SMTP AUTH で認証する方式です
-- PLAIN 認証しか対応できない Outlook Express でもセキュリティを確保できます。
-- 当初、ソースからパッチを当ててコンパイルしてみたのですがうまくいかず、
-- いろいろ調べたところ Postfix のホームページからのリンクで Add-on Software にT LS化 を含めた RPM を作成できる方法がありましたので、これで行くことにしました。

*** RPM を作成してインストール [#a900a374]
- まずは、[[こちら:http://www.sahughes.jp/]] のサービスの中にあるサポートのダウンロードから最新の Source RPM を /usr/src/redhat/SOURCES 配下にダウンロード
- ダウンロードしたのは、postfix-2.1.4-5.src.rpm
- パッケージを展開する。このとき、user と group が違うと警告が出るが無視してよい。
 [root@power root]# cd /usr/src/redhat/SOURCES/
 [root@power SOURCES]# wget  ftp://ftp.sanguine.net/pub/postfix/official/2.1/SRPMS/postfix-2.1.4-5.src.rpm
 --12:27:06--  ftp://ftp.sanguine.net/pub/postfix/official/2.1/SRPMS/postfix-2.1.4-5.src.rpm
           => `postfix-2.1.4-5.src.rpm.1'
 ftp.sanguine.net をDNSに問いあわせています... 61.115.7.227
 ftp.sanguine.net[61.115.7.227]:21 に接続しています... 接続しました。
 anonymous としてログインしています... ログインしました!
 ==> SYST ... 完了しました。    ==> PWD ... 完了しました。
 ==> TYPE I ... 完了しました。  ==> CWD /pub/postfix/official/2.1/SRPMS ... 完了しました。
 ==> PASV ... 完了しました。    ==> RETR postfix-2.1.4-5.src.rpm ... 完了しました。
 長さ: 2,564,530 (確証はありません)
 
 100%[=======================================================>] 2,564,530     51.69K/s    ETA 00:00
 
 12:27:55 (55.17 KB/s) - `postfix-2.1.4-5.src.rpm.1' saved [2,564,530] 
 
 [root@power SOURCES]# rpm -Uvh postfix-2.1.4-5.src.rpm
- ビルドのオプションとしてSASL(今回はSASL2とした。)と TLS オプションを設定し、新しい postfix.spec ファイルを作成する。
- デフォルトで LDAP オプションが有効になっているのでオフとした。
 [root@power SOURCES]# export POSTFIX_SASL=2
 [root@power SOURCES]# export POSTFIX_TLS=1
 [root@power SOURCES]# export POSTFIX_LDAP=0
 [root@power SOURCES]# sh make-postfix.spec
- バイナリ RPM を作成する。下記操作で、/usr/src/redhat/RPMS/i386 配下に postfix-2.1.4-5.sasl2.tls.rh9.i386.rpm という RPM が作成される
 # cd /usr/src/redhat/SPECS
 # rpmbuild -ba postfix.spec
- 上記で作成されたバイナリRPM(postfix-2.1.4-5.sasl2.tls.rh9.i386.rpm)をインストールする
- 新しい cf を作成するため、main.cf、master.cf を事前にリネームしておく
 [root@power SPCES]# mv /etc/postfix/main.cf /etc/postfix/main.cf_2.0.18_muna_modified
 [root@power SPCES]# mv /etc/postfix/master.cf /etc/postfix/master.cf_2.0.18_muna_modified
 [root@power SPCES]# rpm -Uvh /usr/src/redhat/RPMS/i386/postfix-2.1.4-5.sasl2.tls.fc2.i386.rpm
-- バックアップされた main.cf → &ref(main.cf_2.0.18_muna_modified);
-- バックアップされた master.cf → &ref(master.cf_2.0.18_muna_modified);
- ''COLOR(RED){問題発生1}'' : RPM のインストールがエラーになった
-- 最初から導入されていた cyrus-sasl-2.1.18-2.2 と競合するといわれた
 [root@power root]# rpm -Uhv/usr/src/redhat/RPMS/i386/postfix-2.1.4-5.sasl2.tls.fc2.i386.rpm
 Preparing...                ########################################### [100%]
         file /etc/sysconfig/saslauthd from install of postfix-2.1.4-5.sasl2.tls.fc2
  conflicts with file from package cyrus-sasl-2.1.18-2.2
-- --force を付けて強引にインストールしたら、何かワーニングが出たがインストールできた。
 [root@power root]# rpm -Uhv --force /usr/src/redhat/RPMS/i386/postfix-2.1.4-5.sasl2.tls.fc2.i386.rpm
 Preparing...                ########################################### [100%]
    1:postfix                ########################################### [100%]
 link /usr/share/man/man8/sendmail.8.gz incorrect for slave mta-sendmailman
   (/usr/share/man/man1/sendmail.1.gz mta-sendmailman)
-- 上記の影響かどうか不明(途中で色々やったので)だが、FC で標準的に実装されている SMTP を sendmail(default) と postfix で切替える機能がおかしい
-- 実際には切替える必要は無いので、このエラーは無視して先に進める
 [root@power root]# alternatives --config mta
  
 There are 1 programs which provide 'mta'.
  
   Selection    Command
 -----------------------------------------------
 *  1           /usr/sbin/sendmail.sendmail
  
 Enter to keep the current selection[+], or type selection number:


*** /etc/postfix/main.cf の編集 (一般的な設定) [#o7ab7982]
- %%2005-1-1 時点での 一般的な設定だけを行った main.cf%%
- この設定を行っただけで、SMTP 送信エラーの問題は解決した (当然 認証なしで設定)

- 2005-1-13 端山氏の指導で設定を見直した → &ref(main.cf);  &ref(master.cf);
-- myhostname = power.hmuna.com ← マシンの名前を指定する
-- mydomain = hmuna.com         ← ドメイン名を指定する
-- myorigin = $myhostname       ←  myhostname を指定する
-- mydestination = $myhostname, localhost.$mydomain, $mydomain
-- mynetworks = 202.221.8.114/32, 192.168.1.0/24, 127.0.0.0/8
*** aliases の修正 [#jc7b3a8a]
- RPM からインストールすると root 宛てのメッセージが postfix 宛てに配送されるようになっています。
- postfix ユーザを追加するか、メールを受け取れる実在するユーザに配送先を変更する必要があります。
- 今回 munakata あてにサーバー管理関係のメールが来ると煩雑なので、server_admin   というアカウントに転送されるように設定した
- /etc/aliases 編集後は newaliases コマンドを実行してデータベースを更新する事を忘れずに
 # muna add postfix entry
 postfix:        server_admin
*** /etc/postfix/main.cf の編集 (認証関係の設定) [#o7ab7982]
- ''COLOR(RED){問題発生2}'' :パソコンおやじ が引用しているファイルが無い
-- おやじ さんの参照している (その他のサイトでも引用していた) sample-auth.cf というファイルがない。
-- 昔使っていた ( postfix をソースから導入した ) FC1 のマシン上にもなかった
-- 仕方ないので 直接カット&コピーで main.cf に SASL 関連の設定と TLS の設定を追加することにした
- SASL 関係は実際にはいくらも設定がない、問題になりそうな場所も少ない (今回は UNIX サーバー認証(=PAM 認証) を使う)
 # ------------------------------------------------------------------------------------------------------
 ## muna add SASL setting refered from パソコンおやじ
 # ------------------------------------------------------------------------------------------------------
 # SMTP サーバ制御の設定
 # SASLによるSMTP認証を使用
 smtpd_sasl_auth_enable = yes
 
 # 使用可能な認証メカニズムの設定(そのまま)
 smtpd_sasl_security_options = noanonymous
 
 # ローカル認証 realm の名前を設定
 #  Postfixのデフォルトはmyhostnameである。
 # 実はここで大嵌りで、PAM 認証の場合はここは設定なしのままでないと認証できないので注意が必要。
 # 但し、これはsaslauthdによるPAM 認証の場合で、sasl パスワード認証の場合は、myorigin で設定した
 # ドメイン(ホスト)名と同一の値を設定しないと、認証に失敗する。
 #
 #  muna : 当面は PAM 認証を利用するので、上記に従い ”設定なし” としておこう
 #
 #smtpd_sasl_local_domain = $mydomain
 #smtpd_sasl_local_domain = $myhostname
 
 # リレーを許可するものを設定(sample-smtpd.cf)
 # ・permit_mynetworks : mynetworksで指定されたネットワークからのリレーを許可。
 # ・permit_sasl_authenticated : SMTP認証を通過したものは許可。
 # ・reject_unauth_destination : 目的地が $inet_interfaces、$mydestination $virtual_alias_domains
 #  または $virtual_mailbox_domains にマッチするアドレス宛のメール、及び$relay_domains にマッチする
 #  目的地へのメール以外を拒否。
 #  (本設定で不正な外部からのメールをrejectする。check_relay_domainsは2.0では使用
 #  されなくなった。)
 smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
 
 # AUTHコマンドのサポートを認識できないクライアントへの対応(sample-compatibility.cf)
 # Outlook Express 4 および Exchange 5等はAUTH コマンドをサポートしていることを認識できないので、
 # 使用時は下記のような設定を追加する。おやじはOE 6.0なのでnoのまま。
 broken_sasl_auth_clients=yes
- TLS 関係で引用するサーバー証明書の関係のファイル名、ロケーションは適宜変更した
 # ------------------------------------------------------------------------------------------------------
 ## muna add TLS setting refered from パソコンおやじ
 # ------------------------------------------------------------------------------------------------------
 # サーバ証明書/鍵関係の設定を変更(RSAのみ対応)
 smtpd_tls_cert_file = /usr/local/certs/webmail_server.crt
 smtpd_tls_key_file = /usr/local/certs/server.key
 
 # CA関係の設定を変更
 smtpd_tls_CAfile = /usr/local/certs/demoCA/cacert.pem 
 smtpd_tls_CApath = /usr/local/certs/demoCA 
 
 # ログレベルの変更(最低レベル)
 # smtpd_tls_loglevel = 0
 smtpd_tls_loglevel = 1 
 
 # TLS使用(そのまま)
 smtpd_use_tls = yes
 
 # 認証はTLS使用のみ(TLSのみの場合はコメントアウトを外しyesに変更)
 # smtpd_tls_auth_only = no  
 
 # セッションキャッシュの設定(そのまま)
 smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache 
 
 # 証明書は前述の方法で作成
 #smtpd_tls_dh1024_param_file = /etc/postfix/dh_1024.pem
 #smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem
 
 # TLS用乱数デバイスの指定
 tls_random_source = dev:/dev/urandom
 # tls_random_source = egd:/var/run/egd-pool
 # tls_random_bytes = 32
 # tls_random_reseed_period = 3600s 
- SASL / TLS 関係の設定を書き加えた main.cf   → &ref(main_sasltls.cf);
- SASL / TLS 関係の設定を書き加えた master.cf → &ref(master_sasltls.cf);
*** saslauthd 関係の設定 [#n9b59bd5]
- SMTP AUTHで使用する saslauthd 関係の設定をします。
-- 具体的には、saslauthd を起動し PAM による認証(UNIX パスワードによる認証)が行われるようにします。
-- sasl パスワードで認証する場合は、ここの項目は設定しないこと。
--- /usr/lib/sasl2/smtpd.conf に以下の設定がされているか確認し、異なる場合は下記のように設定する。
--- これにより、saslauthd によりPLAIN 認証と LOGIN 認証がなされる。]
 pwcheck_method: saslauthd
 mech_list: plain login
--- /etc/sysconfig/saslauthdに下記のように設定する。(もともとなっていた)
--- これにより、 saslauthd 起動スクリプトは pam による認証を行うオプションで起動する。
 MECH=pam
--- saslauthd の起動スクリプトを有効にし起動する
 # chkconfig --level 345 saslauthd on
 # service saslauthd start
*** sendmail互換プログラムの修正 [#t1b87517]
- messages に sendmail の path がおかしいと出ていたので調査したところ、/usr/sbin/sendmail が互換プログラムに置き換わっておらず、CGI からのメール利用ができなくなっていました。
- CGI を直すのが面倒なので、下記で修正しました。
 # mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
 # ln -s /usr/sbin/sendmail.postfix /usr/sbin/sendmail
*** postfix w/SASL, TLS の起動 [#d4b18529]
 # chmod 755 /etc/rc.d/init.d/postfix
 # chkconfig --add postfix
 # chkconfig --list postfix
 postfix 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ
 # service postfix start
- 起動後に、netstat -ln (netstat -an --tcp) で25番と465番ポートが Listen 状態になっているか確認
 [root@power postfix]# netstat -an --tcp | grep -e 25 -e 445
 tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN
 tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN
*** クライアント側の設定 [#f1669c99]
&ref(SMTP-AuthTLS2.JPG);
&ref(SMTP-AuthTLS.JPG);
** Postfix main.cf の設定マニュアル [#c9a7d0de]
- 日本語マニュアル添付 → &ref(Postfix_manual.txt);
- main.cf の設定での注意として
 myhostname = ホスト名
 mydomain = ドメイン名 
 inet_interfaces = all mydestination = myhostname, localhost.$mydomain, $mydomain
-- この中で  ''COLOR(RED){(myhostname には自分のIPを逆引きした結果を入れておくべきである)}''
----
// 
//  courier-IMAP の導入
//
* MUA の導入 [#afc5d8a3]
** MUA の導入 :courier-IMAP (4.0.0 2005-1-1) の導入 [#w9d79811]
*** 必要なファイルの検索とダウンロード [#qf1b903a]
- FerdaCore1自宅メールサーバーで安定現在稼働中の courier-IMAP を導入することにする
-- FC1 環境ではソースからフルビルドしたが、今回は後の管理を rpm に集約できるよう  ソースから RPM を作ってインストールする
-- 最新版を [[開発サイト>http://www.courier-mta.org/?download.php]] から検索する。 今日時点の最新は (なんと) 今日リリースされた 4.0.0
-- 必要なファイルは2つある。 ''COLOR(RED){先に courier-authlib をインストールする必要がある点に注意}''
 The Courier authentication library must be installed before building any Courier packages
 that needs direct access to mailboxes 
 (in other words, all packages except for courier-sox and courier-analog). 
--- courier-authlib-0.52.tar.bz2 →  &ref(courier-authlib-0.52.tar.bz2); 
--- courier-imap-4.0.0.tar.bz2   →  &ref(courier-imap-4.0.0.tar.bz2); 
-- ファイルを一般ユーザーとして、ユーザのホームに Download して解凍 ( tar -jxf )
 [server_admin@power server_admin]$ ls -l
 drwxrwxr-x  17 server_admin server_admin   12288  1月  2 22:13 courier-authlib-0.52
 -rw-------   1 server_admin server_admin 1965591  1月  2 18:39 courier-authlib-0.52.tar.bz2
 drwxrwxr-x  21 server_admin server_admin    4096  1月  2 20:12 courier-imap-4.0.0
 -rw-------   1 server_admin server_admin 3031646  1月  2 18:14 courier-imap-4.0.0.tar.bz2
*** インストールの準備  (疑似 rpm 環境作成) [#tadecc5f]
- ''COLOR(RED){rpm の作成はまでの作業は root 以外のユーザアカウントでユーザーのホームディレクトリ直下で行う必要がある}''
- これは rpm をユーザートップディレクトリ配下に  /usr/src/redhat/rpm と同じ構造のディレクトリを作成するため。
- 今回は server_admmin ユーザーのホームで以下のスクリプトを実行して、この疑似 rpm 
ディレクトリ構造を作成した。
 [server_admin@power courier-imap-4.0.0]$ mkdir -p $HOME/rpm/{SOURCES,SPECS,BUILD,SRPMS,RPMS/{i386}}
- /home/server_admin の配下に以下の構造ができた。
 [root@power SPECS]# ls -l /home/server_admin/rpm/
 合計 20
 drwxrwxr-x  4 server_admin server_admin 4096  1月  3 04:00 BUILD
 drwxrwxr-x  4 server_admin server_admin 4096  1月  2 20:03 RPMS
 drwxrwxr-x  2 server_admin server_admin 4096  1月  2 21:50 SOURCES
 drwxrwxr-x  2 server_admin server_admin 4096  1月  2 22:23 SPECS
 drwxrwxr-x  2 server_admin server_admin 4096  1月  3 04:04 SRPMS
- これは下の redhat のデェフォルトの rpm の置き場所と同じファイル構造である
 [root@power SPECS]# ls -l /usr/src/redhat/
 合計 20
 drwxr-xr-x  3 root root 4096  1月  1 22:43 BUILD
 drwxr-xr-x  8 root root 4096 12月 29 05:17 RPMS
 drwxr-xr-x  2 root root 4096  1月  2 12:27 SOURCES
 drwxr-xr-x  2 root root 4096  1月  1 22:40 SPECS
 drwxr-xr-x  2 root root 4096  1月  1 22:45 SRPMS
- 以下のコマンドを実行して、rpm プログラムに ''COLOR(RED){rpm のトップディレクトリーを読み変えさせる}'' ← このコマンドは重要
- このコマンドを server_admin ユーザーのログインスクリプトに書き加えておく
 [server_admin@power courier-imap-4.0.0]$ echo "%_topdir   $HOME/rpm" >> $HOME/.rpmmacros
*** courier-authlib のインストール  (rpm の作成、rpm のインストール) [#p5d201ae]
- /home/server_admin/ 直下にサイトからソース tarball を Download して展開する
- [[INSTALL Document:https://wiki.hmuna.com:9443/ext_docs/courier-authlib/INSTALL.html]] を良く読む
- この中に rpm を作成する場合には .spec ファイルを編集するな... と書いてある
 Do not try to hack the RPM build script to ignore these dependencies! 
 For simplicity's and maintainability sake the RPM build script creates all
 available authentication modules. All extra authentication modules will 
 be built as optional subpackages. They do not have to be installed at runtime. 
- また、mysql や open-ldap 関係のライブラリーを要求される (yum install で導入可能) が、これは rpm のビルド時だけに必要だから、気にせず導入して進めよとも書いてある。
 Install the LDAP, MySQL, and PostgreSQL development libraries only for the
 duration of building binary RPMs. They can be uninstalled afterwards.
- 先に必要なライブラリーを yum でインストールする ( rpmbuild でエラーが出てから対応すればよい)
 [root@power courier-authlib-0.52]# yum install postgresql-devel
 [root@power courier-authlib-0.52]# yum install mysql-devel
 [root@power courier-authlib-0.52]# yum install expect
- 以下の手順に従って rpm を作成する (特に何も設定はしていない)
 [server_admin@power courier-authlib-0.52]$ cp courier-authlib.spec ../rpm/SPECS/
 [server_admin@power courier-authlib-0.52]$ cd ../rpm/SPECS/
 [server_admin@power SPECS]$ rpmbuild -ba courier-authlib.spec
-- rpmbuild 時のログ       → &ref(authlib_rpmbuild_log_0103.txt);
-- rpmbuild 再実行時のログ → &ref(authlib_rpmbuild_log_0103b.txt);
- su で root になってから rpm で courier-authlib をインストールする
 [server_admin@power SPECS]$ su
 Password:
 [root@power SPECS]# rpm -ivh ../RPMS/i386/courier-authlib-*
 Preparing...                ########################################### [100%]
    1:courier-authlib        ########################################### [ 14%]
    2:courier-authlib-debugin########################################### [ 29%]
    3:courier-authlib-devel  ########################################### [ 43%]
    4:courier-authlib-ldap   ########################################### [ 57%]
    5:courier-authlib-mysql  ########################################### [ 71%]
    6:courier-authlib-pgsql  ########################################### [ 86%]
    7:courier-authlib-userdb ########################################### [100%]
- 作成した FedraCore2 用の rpm ダウンロード  
+ → &ref(courier-authlib-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-debuginfo-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-devel-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-ldap-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-mysql-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-pgsql-0.52-1.2.i386.rpm);
+ → &ref(courier-authlib-userdb-0.52-1.2.i386.rpm);
*** courier-imap のインストール (rpm の作成、rpm のインストール) [#ia95f326]
- spec ファイルの編集 : 日本語文字コードの追加を行う (88行目付近)
 [server_admin@power courier-imap-4.0.0] vi courier-imap.spec
 
 87 %if %(test '%{xflags}' = '%%{xflags}' && echo 1 || echo 0)
 88 %define xflags --enable-unicode=iso-2022-jp,iso-8859-1,utf-8 ← iso-2022-jp を追加する
 89 %endif
- 上記の courier-authlib と同じ手順で rpm を作成する (一般ユーザに戻るのを忘れないように)
 [server_admin@power courier-imap-4.0.0]$ cp courier-imap.spec ../rpm/SPECS
 [server_admin@power courier-imap-4.0.0]$ cp ../courier-imap-4.0.0.tar.bz2 ../rpm/SOURCES
 [server_admin@power courier-imap-4.0.0]$ cd ../rpm/SPECS
-- rpm 作成時のログ → &ref(imap_rpmbuild_log_0103.txt);
- su で root になってから rpm で courier-imap をインストールする
 [server_admin@power SPECS]$ su
 Password:
 [root@power SPECS]# rpm -ivh ../RPMS/i386/courier-imap-*
 Preparing...                ########################################### [100%]
    1:courier-imap-debuginfo ########################################### [ 50%]
    2:courier-imap           ########################################### [100%]
- 作成した FedraCore2 用の rpm 
+ → &ref(courier-imap-4.0.0-1.2.i386.rpm);
+ → &ref(courier-imap-debuginfo-4.0.0-1.2.i386.rpm);
*** courier-IMAP の設定ファイル ( /usr/lib/courier-imap/etc/ ) の編集 [#b1e0c597]
- /usr/lib/courier-imap/etc/ に 接続方式毎に複数の設定ファイルが準備されている。
-- pop3d       : 変更なし headline アカウントがSSLを使えないため
-- pop3d-ssl   : メール証明書の定義を変更
-- imapd       : 変更なし、最終的には起動しない設定に変更予定
-- imapd-ssl   : メール証明書の定義を変更
- メール証明書の変更箇所
 #TLS_CERTFILE=/usr/lib/courier-imap/share/pop3d.pem
 # muna modify to refer /usr/local/certs/webmail.pem
 TLS_CERTFILE=/usr/local/certs/webmail.pem
*** 各ユーザーの Maildir を作成 ( courier の場合、root でも /root/Maildir が作れる) [#a987b5d0]
 [root@power root]# /usr/lib/courier-imap/bin/maildirmake Maildir
 [root@power root]# ls -l
 合計 188
 drwxr-xr-x  2 root root  4096  1月  1 21:26 Desktop
 drwx------  5 root root  4096  1月  2 20:38 Maildir
 -rw-r--r--  1 root root  1826 12月 24 17:04 anaconda-ks.cfg
 drwx------  8 root root  4096  1月  1 21:07 evolution
 -rw-r--r--  1 root root 64076 12月 24 17:04 install.log
 -rw-r--r--  1 root root  5890 12月 24 17:04 install.log.syslog
*** courier-IMAP の起動状況の確認 [#wd2fbc44]
- /var/log/maillog を見ると設定したプロセスが正常に起動していることが分かる
-- authdaemon としては PAM, MySQL, PostgreSQL などが動作している
-- メールエンジンとしては pop3 と imap4 が起動している (SSL はまだ起動させていない)
 Jan  3 14:05:12 power authdaemond: modules="authuserdb authpam authldap authcustom", daemons=5
 Jan  3 14:05:12 power authdaemond: Installing libauthuserdb
 Jan  3 14:05:12 power authdaemond: Installation complete: authuserdb
 Jan  3 14:05:12 power authdaemond: Installing libauthpam
 Jan  3 14:05:12 power authdaemond: Installation complete: authpam
 Jan  3 14:05:12 power authdaemond: Installing libauthldap
 Jan  3 14:05:12 power authdaemond: Installation complete: authldap
 Jan  3 14:05:12 power authdaemond: Installing libauthcustom
 Jan  3 14:05:12 power authdaemond: Installation complete: authcustom
-- netstat -an --tcp を見ると、必要なポート (pop:110, imap:143
) は LISTEN になっている
 [root@power root]# netstat -an --tcp | grep -e 110 -e 143
 tcp        0      0 :::110                  :::*                    LISTEN
 tcp        0      0 :::143                  :::*                    LISTEN
- ''COLOR(RED){しかし、メールサーバーへの接続を行うとエラーになってしまう}''
 Jan  3 14:06:40 power imapd: Connection, ip=[::ffff:192.168.1.17]
 Jan  3 14:06:47 power imapd: authdaemon: s_connect() failed: No such file or directory
 Jan  3 14:06:47 power imapd: LOGIN FAILED, user=munakata, ip=[::ffff:192.168.1.17]
 Jan  3 14:06:47 power imapd: authentication error: No such file or directory
 Jan  3 14:07:02 power imapd: Connection, ip=[::ffff:192.168.1.17]
 Jan  3 14:07:02 power imapd: authdaemon: s_connect() failed: No such file or directory
 Jan  3 14:07:02 power imapd: LOGIN FAILED, user=munakata, ip=[::ffff:192.168.1.17]
 Jan  3 14:07:02 power imapd: authentication error: No such file or directory
*** courier-authdaemon の不具合の原因解析 [#b559e802]
- [[このページ>http://www.infocopter.com/know-how/courier-imap/debugging.html]] を参考にして、authdaemon の動きを研究してみよう
-- /usr/lib/courier-imap/etc/pop3d に DEBUG_LOGIN=2 を追加した
-- /etc/syslog.conf に以下の行を追加し、ファイルを作成した ( touch /var/log/debug ) 
 *.debug			/var/log/debug
-- killall -1 syslogd を実行して syslog を再起動した
-- courier-IMAP と courier-Authdaemon を再起動した
-- telnet xxxx 110 で pop3 にアクセスした
- /var/log/debug に pop3d のデバッグメッセージを出してみた
 Jan  3 16:26:53 power syslogd 1.4.1: restart.
 Jan  3 16:27:19 power htt_server[2263]: Client shut down the connection owned by im_id(1).
 Jan  3 16:27:19 power htt_server[2263]: status has not been enabled yet. (1, 1)
 Jan  3 16:27:24 power userhelper[3163]: pam_timestamp: updated timestamp file `/var/run/sudo/root/unknown'
 Jan  3 16:27:24 power userhelper[3164]: running '/usr/sbin/system-config-services' with root privileges on behalf of 'root'
 Jan  3 16:27:31 power authdaemond: stopping authdaemond children
 Jan  3 16:27:33 power authdaemond: modules="authuserdb authpam authldap authcustom", daemons=5
 Jan  3 16:27:33 power authdaemond: Installing libauthuserdb
 Jan  3 16:27:33 power authdaemond: Installation complete: authuserdb
 Jan  3 16:27:33 power authdaemond: Installing libauthpam
 Jan  3 16:27:33 power authdaemond: Installation complete: authpam
 Jan  3 16:27:33 power authdaemond: Installing libauthldap
 Jan  3 16:27:33 power authdaemond: Installation complete: authldap
 Jan  3 16:27:33 power authdaemond: Installing libauthcustom
 Jan  3 16:27:33 power authdaemond: Installation complete: authcustom
 Jan  3 16:27:41 power htt_server[2263]: status has not been enabled yet. (1, 1)
 Jan  3 16:27:44 power htt_server[2263]: status has not been enabled yet. (1, 1)
 Jan  3 16:27:55 power pop3d: Connection, ip=[::ffff:192.168.1.17]
 Jan  3 16:28:04 power pop3d: LOGIN: ip=[::ffff:192.168.1.17], command=USER
 Jan  3 16:28:10 power pop3d: LOGIN: ip=[::ffff:192.168.1.17], command=PASS
 Jan  3 16:28:10 power pop3d: LOGIN: ip=[::ffff:192.168.1.17], username=munakata
 Jan  3 16:28:10 power pop3d: LOGIN: ip=[::ffff:192.168.1.17], password=freedman
 Jan  3 16:28:10 power pop3d: authdaemon: s_connect() failed: No such file or directory
 Jan  3 16:28:10 power pop3d: LOGIN FAILED, user=munakata, ip=[::ffff:192.168.1.17]
 Jan  3 16:28:10 power pop3d: authentication error: No such file or directory
 Jan  3 16:28:14 power htt_server[2263]: status has not been enabled yet. (1, 1)
- これでは、/var/log/maillog の情報とあまり変わらない、何かファイルが無いらしい
+ 関連のありそうなファイルを探してみた。
++ /var/spool/authdaemon
++ /usr/sbin/authdaemond   <----  daemon startup script
++ /usr/src/debug/courier-authlib-0.52/authdaemon.c             <<<< デバッグ関連
++ ''COLOR(RED){/usr/src/debug/courier-authlib-0.52/authdaemonlib.c}''          <<<<
++ /usr/src/debug/courier-authlib-0.52/authdaemond.c            <<<<
++ /usr/lib/debug/usr/libexec/courier-authlib/authdaemond.debug <<<<
++ /usr/libexec/courier-authlib/authdaemond
++ /usr/local/sbin/authdaemond
++ /usr/local/var/spool/authdaemon
++ /usr/local/libexec/courier-authlib/authdaemond
++ /usr/local/etc/authlib/authdaemonrc   <-------- 設定ファイル(自動生成された)
++ /usr/local/etc/authlib/authdaemonrc.dist <----- 自動生成のもと
- 関連しそうなファイル (上記の赤いソース) の中の問題の原因と思われる関数
 static int opensock()
 {
         int     s=socket(PF_UNIX, SOCK_STREAM, 0);
         struct  sockaddr_un skun;
                                                                                                                                                 
         skun.sun_family=AF_UNIX;
         strcpy(skun.sun_path, AUTHDAEMONSOCK);
                                                                                                                                                 
         if (s < 0)
         {
                 perror("CRIT: authdaemon: socket() failed");
                 return (-1);
         }
                                                                                                                                                
        if (s_connect(s, (const struct sockaddr *)&skun, sizeof(skun),TIMEOUT))
         {
                 perror("ERR: authdaemon: s_connect() failed");  <<<==== ここに来ているのでは?
                 if (errno == ETIMEDOUT || errno == ECONNREFUSED)
                         fprintf(stderr, "ERR: [Hint: perhaps authdaemond is not running?]\n");
                 close(s);
                 return (-1);
         }
         return (s);
 }
- 上の場所だとすると、ソケットが開けないのが原因のようだ
----
* FAQ [#j600c36f]
*** 添付ファイルがなくなる問題 [#q07bb915]
- OutLook 2003 から送信したメールに添付したメールが無くなる問題が発生
- 解析したところ 添付ファイルが MIME が解釈できない winmail.dat という
 ファイルになって添付されていることがわかった
- この添付ファイルは OutLook でしか展開できないもの
- これを防ぐには OutLook で送信時に リッチテキスト を利用を無効にする
- 参照情報 ⇒ http://support.microsoft.com/default.aspx?scid=kb;en-us;278061
----
//
//  失敗の記録
//
* 失敗の記録 [#kf31844a]
** MUA の導入1:Dovecot [#m3e6ff2b]
- 従来 courier-IMAP で POP3、IMAP を SSL 対応で運用していたが、FC2 に標準でバンドルされている Devocot でも同様の運用ができそう。
- Dovecot を試験的に導入した結果、''COLOR(RED){root アカウントでは使えないように意図的に設定されている}'' ことがわかった。 
-- /etc/dovecot.conf の中の記述
 # Valid UID range for users, defaults to 500 and above. This is mostly
 # to make sure that users can't log in as daemons or other system users.
 # Note that denying root logins is hardcoded to dovecot binary and can't
 # be done even if first_valid_uid is set to 0.
 #first_valid_uid = 500
 #last_valid_uid = 0
-- 実際にアクセスした時の /var/log/maillog のエラー
 Jan  1 21:02:38 power dovecot: Logins with UID 0 not permitted (user root)
 Jan  1 21:02:38 power pop3-login: Internal login failure: root [192.168.1.17]
*** Devcot の標準導入を行う。 [#g5b517c4]
- 設定ファイル /etc/dovecot.conf の編集
-- imap, imaps, pop, pops を有効にする (外部からは SSL アクセスしか通らないので SSL 対応は必須 )
 # muna enables All
 protocols = imap imaps pop3 pop3s
-- SSL を有効にする
 # Disable SSL/TLS support.
 #ssl_disable = no
 # muna enables SSL
 ssl_disable = no
-- サーバー証明書の場所の指定
--- サーバー証明書は [[SSL>[[Fedra2SSL]]]] のページで作成したものを利用する
 # muna defines certs file create by own (an-autjrozed) CA
 ssl_cert_file = /usr/local/certs/webmail_server.crt
 ssl_key_file = /usr/local/certs/webmail.pem

- 編集した 2005-1-1 時点の dovecot.conf (但し web-mail が正常に動作していない) → &ref(dovecot.conf);
*** どうも様子がおかしい [#mdf0a5f8]
-- 基本的には SSL で IMAP4 で SMTP-Auth でのセッションが成立してメールも読み書き送受信ができる....が、
-- 時々 タイムアウトエラーがクライアント(Outlook 2003) 上に出る
-- /var/log/maillog を見ると
 Jan  2 15:12:51 power imap-login: Login: munakata [192.168.1.12]
 Jan  2 15:22:32 power dovecot: child 18512 (imap) killed with signal 11
 Jan  2 15:22:42 power imap-login: Login: munakata [192.168.1.12]
 Jan  2 15:22:44 power dovecot: child 18556 (imap) killed with signal 11
 Jan  2 15:22:48 power imap-login: Login: munakata [192.168.1.12]
 Jan  2 15:24:04 power dovecot: child 18558 (imap) killed with signal 11
 Jan  2 15:24:07 power imap-login: Login: munakata [192.168.1.12]
 Jan  2 15:24:07 power dovecot: child 18561 (imap) killed with signal 11
 Jan  2 15:24:28 power imap-login: Login: munakata [192.168.1.12]
 Jan  2 15:24:28 power imap-login: Login: munakata [192.168.1.12]
 Jan  2 15:42:35 power imap-login: Login: munakata [192.168.1.17]
 Jan  2 15:42:52 power last message repeated 4 times
 Jan  2 15:43:02 power dovecot: child 18698 (imap) killed with signal 11
- 明らかに、dovect から何度も切断されて再接続をしている様子が見える、おかしい
- /Maildir のロックに絡んだ場所に問題があるのかもしれない
- homepage を見ると ''COLOR(RED){まだ色々デバッグを行っている途上の様なので、深追いはやめる}'' ことにする。
** courier-IMAP 失敗手順の記録 (これをやってはだめ) [#heace06d]
*** 問題発生 --- 例によってパッケージが足りない [#td5cf0d9]
- rpmbuild で RPM を作成しようと試みたが、例によってエラーが出た

 [server_admin@power courier-imap-4.0.0]$ rpmbuild -ba courier-imap.spec
 エラー: Failed build dependencies:
         courier-authlib-devel is needed by courier-imap-4.0.0-1.2
         openldap-servers is needed by courier-imap-4.0.0-1.2

- su コマンドで root になって yum で必要なファイルをインストールしてみる
-- root にならないと yum でインストールできない
 [server_admin@power courier-imap-4.0.0]$ su
 Password:
 [root@power courier-imap-4.0.0]#
-- openladp-servers は yum でインストールできた
 [root@power courier-imap-4.0.0]# yum install openldap-servers
 Gathering header information file(s) from server(s)
 Server: Fedora Core 2 - i386 - Base
 Server: Fedora Core 2 - i386 - Released Updates
 Finding updated packages
 Downloading needed headers
 Resolving dependencies
 Dependencies resolved
 I will do the following:
 [install: openldap-servers 2.1.29-1.i386]
 Is this ok [y/N]: y
 Downloading Packages
 Getting openldap-servers-2.1.29-1.i386.rpm
 openldap-servers-2.1.29-1 100% |=========================| 3.6 MB    00:12
 Running test transaction:
 Test transaction complete, Success!
 openldap-servers 100 % done 1/1
 Installed:  openldap-servers 2.1.29-1.i386
 Transaction(s) Complete
 [root@power courier-imap-4.0.0]#
-- しかし courier-authlib-devel は yum では見つけられなかった (まだ新しいのか?)
 [root@power courier-imap-4.0.0]# yum install courier-authlib-devel
 Gathering header information file(s) from server(s)
 Server: Fedora Core 2 - i386 - Base
 Server: Fedora Core 2 - i386 - Released Updates
 Finding updated packages
 Downloading needed headers
 Cannot find a package matching courier-authlib-devel
 No actions to take
-- [[courier の開発サイトの Download page :http://www.courier-mta.org/?download.php~imap]] にあることがわかった
-- Download して設定をおこなう
-- root から一般ユーザに戻って、server_admin のホームにダウンロード
 [server_admin@power server_admin]$ tar -jxf courier-authlib-0.52.tar.bz2
 [server_admin@power server_admin]$ cd courier-authlib-0.52
 [server_admin@power courier-authlib-0.52]$ cat INSTALL
-- &ref(INSTALL); の中身を読むと 一般的には下記の手順でインストールせよと書いてある
  ./configure [options] [variable=value]*...
  make
  make install
  make install-migrate
  make install-configure
-- これは以前見たことがある → [[昔のページ>Home_mail]] を参照したが、肝心な情報(=configure の指定) が書いてない、残念!
 The 'make install-migrate' command imports the authentication
 configuration from earlier versions of these packages. 'make
 install-migrate' is not needed otherwise.
--  と書いてあるので 上記の unstall-migrate は今回は不要だろう (やらない)
-- ./configure を実行したら、最後に以下のワーニングが出た。 曰く、Fedra なら RPM 使った方が簡単だよ... とのこと。
 configure: WARNING: === I think you are trying to run this configure script
 configure: WARNING: === on Red Hat/Fedora.  You're doing too much work!
 configure: WARNING: === It's much faster to create installable binary RPMs
 configure: WARNING: === like this: http://www.courier-mta.org/FAQ.html#rpm
 configure: WARNING: === When you do this you may find that RPM will tell you
 configure: WARNING: === to install some other software first, before trying to
 configure: WARNING: === build this one, and even tell you the name of RPMs you
 configure: WARNING: === need to install from the distribution CD.  That's much
 configure: WARNING: === easier than trying to figure out the same from some
 configure: WARNING: === cryptic error message.
 configure: WARNING:
 configure: WARNING: === Even if you don't intend to use everything you need to
 configure: WARNING: === have in order to build via RPM, you should still do as
 configure: WARNING: === you're told.  All the extra stuff (LDAP, SQL, etc...)
 configure: WARNING: === goes into RPM sub-packages, which do not need to be
 configure: WARNING: === installed.
 configure: WARNING: === But, if you insist, you can simply add '--with-redhat'
 configure: WARNING: === parameter to this configure script and not see this
 configure: WARNING: === error message.  You should also do this when upgrading
 configure: WARNING: === and you didn't use RPM with the older version.
 configure: error: ... in either case you better know what you're doing!
-- 改めて RPM を探すが、すぐに使えそうな物も見付からない (足りないものがあったり)
-- 上の親切なメッセージの最後にある -with-redhat を付けて 再度実行してみた
-- 以下のエラーがあるがとりあえず正常終了した。全体のログを添付 → &ref(config_log.txt);
 [server_admin@power courier-authlib-0.52]$ cd courier-authlib-0.52
 
  ( 途中省略 : 詳細は添付ログ参照 )
 checking for expect... no
 configure: WARNING: -----------------------------------------------------
 configure: WARNING: expect not found - will not be able to change passwds
 configure: WARNING: in webmail
 configure: WARNING: -----------------------------------------------------
 checking for passwd... /usr/bin/passwd
 
  ( 途中省略 : 詳細は添付ログ参照 )
 
 configure: creating ./config.status
 config.status: creating Makefile
 config.status: creating config.h
 config.status: executing depfiles commands
 [server_admin@power courier-authlib-0.52]$
-- 引続き make, 更に su コマンドで root になって make-install と make install-configure を実行し、全て正常終了した。
--- make 時のログ → &ref(make_log.txt);
--- make install 時のログ → &ref(make_install_log.txt);
--- make install-configure 時のログ → &ref(make_install-configure_log.txt);
*** courier-IMAP 4.0.0 のインストールの続き [#ncd439e0]
- rpm の作成を再開する
 [server_admin@power server_admin]$ cd rpm/SPECS/
 [server_admin@power SPECS]$ rpmbuild -ba courier-imap.spec 
 エラー: Failed build dependencies:
         courier-authlib-devel is needed by courier-imap-4.0.0-1.2
- しかし、上で苦労して courier-authlib 導入したのに、まだ エラーと言われる
- この際なので、--nodeps をつけて実行したら 膨大なログを出しながらとりあえず正常に終了までいった。
- ログファイル → &ref(courier-IMAP-rpm_log.txt);
 [server_admin@power SPECS]$ rpmbuild -ba --nodeps courier-imap.spec
- su で root になって、作成した rpm を使ってインストールを行う
 [server_admin@power SPECS]$ su
 Password:
 [root@power SPECS]# cd ../RPMS/i386/
 [root@power i386]# ls -l
 合計 420
 -rw-rw-r--  1 server_admin server_admin 421773  1月  2 20:03 courier-imap-4.0.0-1.2.i386.rpm
 -rw-rw-r--  1 server_admin server_admin   1457  1月  2 20:03 courier-imap-debuginfo-4.0.0-1.2.i386.rpm
*** やはり 依存関係でエラーが出てしまった [#c71e4da1]
 [root@power i386]# rpm -ivh courier-imap-4.0.0-1.2.i386.rpm
 エラー: Failed dependencies:
         libcourierauth.so.0 is needed by courier-imap-4.0.0-1.2
         libcourierauthsasl.so.0 is needed by courier-imap-4.0.0-1.2
 [root@power i386]#
- find コマンドで必要とされる 2つのファイルを検索すると、既に正しくインストールされている。
- これは courier-authlib を rpm を使わずにインストールしたため、rpm が依存関係を正しく解決できていないと誤判定した結果
 [root@power i386]# find / -name libcourierauth.so -print
 /usr/local/lib/courier-authlib/libcourierauth.so
 /home/server_admin/courier-authlib-0.52/.libs/libcourierauth.so
 
 [root@power i386]# find / -name libcourierauthsasl.so -print
 /usr/local/lib/courier-authlib/libcourierauthsasl.so
 /home/server_admin/courier-authlib-0.52/.libs/libcourierauthsasl.so
- 例によって、--nodeps でインストールを強行する。
 [root@power i386]# rpm -ivh --nodeps courier-imap-4.0.0-1.2.i386.rpm
 Preparing...                ########################################### [100%]
    1:courier-imap           ########################################### [100%]
 [root@power i386]#
- めでたく正常にインストールが完了した ( nodeps だから当り前か )
----
*** courier-authlib の rpm 化の検討 [#q5757329]
- courier-authlib.spec を編集して 不要な (そして rebuild 時にエラーになる) mysql、postgre、expect 関係を無効にした
* procmail [#x2f50f09]
- http://www.jaist.ac.jp/~fjt/procmail.html
- http://www.cool-web.com/procsm1.html
- http://www.rcnp.osaka-u.ac.jp/Divisions/CN/computer/ibm/manual/procmail/setting_procmail
- http://www.club.kyutech.ac.jp/support/manual/procmail.html
- http://www.jp.redhat.com/manual/Doc72/RH-DOCS/rhl-rg-ja-7.2/s1-email-procmail.html
- http://laku19.adsl.netsonic.fi/era/procmail/links.html
** レシピの書き方 [#gfa541fe]
- ホームディレクトリに.procmailrc というファイルを置き、レシピを記述する事により設定を行います。
- 複数のレシピを記述することができ、一つのレシピは「:0」で始まり「:0」かファイル終端(EOF)で終わります。
- 行頭に "#"を記述することでコメントを記述することもできます。
- レシピには大別して3つの事を記述します。
-- フラグ    : Procmailにメッセージを渡す方法を指定 
-- 条件文    :処理を行うメッセージを特定 
-- アクション  :条件に該当した場合に行う処理 

*** フラグ [#u994d42e]
フラグにはメッセージを処理する際のProcmailへのメッセージ(メール)の渡し方を記述します。フラグの記述には以下のものがあります。

|H| 記述が省略された場合の動作。メッセージのヘッダだけを条件文に渡し検査する。|
|B| メッセージの本文だけを条件文に渡し、検査する。|
|A| 同じブロックレベルに記述されたAや、aの用いられてないレシピが該当した場合にだけ検査する。|
|a| Aと同様だが、手前のレシピが正しく実行された場合にだけ検査する。|
|E| Aの逆。手前のレシピが実行されなかった場合にだけ検査する。 |
|e| aの逆。手前のレシピが失敗した場合に検査する。|
|h| アクション部にヘッダだけを渡す。|
|b| アクション部にメッセージの本文だけを渡す。|
|f| パイプをフィルタとみなす。つまり、前処理ができる。|
|c| メッセージのコピーを残す。これがなければ、元のメール加工してしまうため、次の処理の為に必要である。~ 転送する際にもコピーを残しておかなければメールは転送先にのみ残る。|
|w| 指定されたフィルタやプログラムが終了するまで待機し、処理に失敗した場合には検査を行わない。|
|W|wと同じだが、処理に失敗しても検査する。 |
|i|あらゆる書きこみエラーを無視して検査する。 |
|hb|なにも書かない場合の動作。アクション部にメッセージのヘッダと本体の両方を渡す。|

- フラグに続いてロックファイルを指定すると、あるメッセージに対して複数の処理が同時に行われないようにします。
- 指定の仕方はフラグの最後にスペースをつけて:[ロックファイル名]です。
- ロックファイル名は省略することができ、省略した場合は自動的につけられます。
 :0 HBDhc :lock.txt
 * ^HOGE
 | tar zcf hoge.tar.gz 
- lock.txt」があればそれをロックファイルとしてロックする。
- メールのヘッダ・本体を問わずある一行の行頭が「HOGE」で始まるメールを受信するとメッセージをコピーしながらヘッダ部分だけを圧縮する。

*** 条件文 [#w341f389]
- 条件文はフラグに続く、行頭が「*」で始まる行を指します。
- 条件は[[ 正規表現 >http://www.sixnine.net/regexp/index.html]]によって記述します。省略した場合は無条件でアクション部が実行されます。
- 複数の条件文を記述することも可能で、その場合は全ての条件を満たしている時にのみアクションが実行されます。

条件文の記述には以下のものがあります。

|!|条件の否定。条件を満たさなかった時に実行する。|
|$|条件文に現れる環境変数をシェルの様に評価する。|
|?|指定したプログラムの終了コードを利用する。(0:成功、1:失敗)|
|<|長さが後に記述されたバイト数(10進)以上であれば実行する。|
| >|長さが後に記述されたバイト数(10進)以下であれば実行する。|
|変数名 ??|指定された値と変数を比較する。|
| \|クォートする。\/と記述することで該当個所を変数MATCHに格納する。|

- 例
 HOGE=HOGEHOGE
 GA=GAGAGA
 CHECK=yes   
 
 :0 B :                            ロックファイルは省略。メッセージ本体だけを検査。 
 * ! ^$HOGE                        行頭に「$HOGE」という文字がない。(*のあとに$が書かれていないので)
 * $ ^$GA                          行頭に「GAGAGA」と書かれている。 
 * ? test -f $HOME/anti_hoge       ホームディレクトリに「anti_hoge」というファイルがある。 
 * < 5000                          メッセージ本文が5000バイト以下。
 * > 4900                          メッセージ本文が4900バイト以上。
 * $CHECK ?? yes                  変数「CHACK」が「yes」のメッセージを探す。
 * ^ADDR *\/.*                    「ADDR」に続く空白文字の後に記述された文字列を変数「MATCH」に格納。
 | echo "$MATCH" >> anti_hoge      変数「MATCH」を「anti_hoge」に書き足す。 

- 例2 ( server_admin のスパム検出ロジック asof 2006-8-13 )
 # Only accept @[mail.]hmuna.com
 :0H:
 * ! ^From: .*@mail.hmuna.com
 * ! ^From: .*@hmuna.com
 #/dev/null
 $MAILDIR/.INBOX.SPAM/cur 
 
 # Reject deception target mail
 :0H:
 * ^From: (support|sales|mail|root|postmaster|uucp)@hmuna.com
 $MAILDIR/.INBOX.SPAM/cur
 
 # Reject title less mail
 :0H:
 * ^Title:$
 $MAILDIR/.INBOX.SPAM/cur

***アクション [#w8064771]
全ての条件を満たした場合に実行される内容を一行で記述する。

|!|指定されたアドレスに転送。スペースで区切る事により列挙可能。|
|||メッセージを他のプログラムに渡す。|
|{..}| メッセージにあたらしい条件文を付加したい時や、複数のアクションを実行したいときにカッコでくくる。 |
|ファイル名| メッセージをファイルに格納する。ロック指定を忘れずに。|
|ディレクトリ名 |メッセージにユニークなファイル名をつけてディレクトリに格納。|
|ディレクトリ名/.| メッセージをディレクトリに連番形式で格納。|
|/dev/null| メッセージを廃棄。復元不可。|
** public_mail の設定 ( /home/publicmail/.procmailrc ) [#c58a5c55]
・ 最新のレシピ  ----> &ref(procmail_recipi.txt);

 [root@power root]# cat /home/public_mail/.procmailrc
 PATH=/bin:/usr/bin:/usr/local/bin
 MAILDIR=$HOME/Maildir
 DEFAULT=$MAILDIR/
 LOGFILE=$MAILDIR/procmaillog
 LOCKFILE=$HOME/.lockmail
 VERBOSE=ON
 
 #
 # spam assassin で SAPM を判定
 #
 :0 fw: spamassassin.lock
 * < 256000
 |/usr/bin/spamc 
 
 #
 # SAPM メールの振り分け
 #
 # move [SPAM] marked mail to spam folder
 :0
 * ^Subject:.*SPAM
 $MAILDIR/.spam/cur
 
 # [SPAM] がなくてもレベルが1以はdoubtに移動
 :0
 * ^X-Spam-Level: [* ** *** ****]
 $MAILDIR/.spam.doubt/
 
 #
 # SPAM 以外でも捨てるメールを指定
 #
 
 # delete キーマンズネット
 :0
 * ^From: .*news-keymans@mail.recruit.co.jp*
 /dev/null 
 
 #
 # Mailing List などの振り分け
 # 
 
 # move CML
 :0
 * ^(To|Return-Path): .*@citroen*
 $MAILDIR/.Message_saved.CML/
 
 # move Cingular
 :0
 * ^From: .*@cingular-mail.com*
 $MAILDIR/.Message_saved.cingular/
 
 # move Nissen on-line
 :0
 * ^From: .*@nissen.co.jp*
 $MAILDIR/.Message_saved.Shopping.Nissen/
 
 # move Rakuten
 :0
 * ^From: .*rakuten.co.jp*
 $MAILDIR/.Message_saved.Shopping.Rakuten/
 
 # move Cecile
 :0
 * ^From: .*@cecile.co.jp
 $MAILDIR/.Message_saved.Shopping.Cecile/ 
 
 # move JustSystem
 :0
 * ^From: .*@justsystem.co.jp
 $MAILDIR/.Message_saved.Shopping.JustSystem/
 
 # move IBM
 :0
 * ^From: .*clubibm@*
 $MAILDIR/.Message_saved.Shopping.IBM/ 
 
 # move Tamamoya
 :0
 * ^From: .*tamamo@
 $MAILDIR/.Message_saved.Shopping.Tamamo/
 
 # move Nomura Securities
 :0
 * ^From: .*nomura@mail.nomura-trade*
 $MAILDIR/.Message_saved.Nomura/
 
 # Koizumi mail magazine
 :0
 * From: .*koizumi@mmz.kantei.go.jp*
 $MAILDIR/.Message_saved.&XA9syTDhMPww6w-/

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