Jan 102006
 

ULTRA 10には結局Solaris 10をいれて、とりあえず自宅メールサーバに仕立てました。

CSWパッケージ導入

ソースからコンパイル、インストールして導入していくのは大変なので、Blastwave.orgで提供されるバイナリパッケージを利用します。
こちらの手順にしたがって環境を構築すると、pkg-getコマンドでバイナリパッケージの導入、アップデートがおこなえるので便利です。
メール環境構築に必要な、以下のパッケージ群(と依存パッケージ)を導入します。

  • CSWcourierimap – Courier-IMAP
  • CSWmaildrop – maildrop
  • CSWfetchmail – fetchmail

SendmailのMaildir対応

IMAPサーバにはCourierを使いますので、Maildir配送となるようにsendmail.cfを変更します。
Sendmail で Maildir を使う」の情報を参考に、ローカル配送プログラムを/opt/csw/bin/maildropに変更し、/opt/csw/etc/maildrop/maildroprcを用意します。

# cd /etc/mail/cf/cf
# cp sendmail.mc sendmail-maildrop.mc; vi sendmail-maildrop.mc
# diff -u sendmail.mc sendmail-maildrop.mc
--- sendmail.mc Sat Jan 22 08:30:45 2005
+++ sendmail-maildrop.mc        Tue Jan 10 12:22:07 2006
@@ -26,6 +26,7 @@
 OSTYPE(`solaris8')dnl
 DOMAIN(`solaris-generic')dnl
 define(`confFALLBACK_SMARTHOST', `mailhost$?m.$m$.')dnl
+FEATURE(`local_procmail', `/opt/csw/bin/maildrop', `maildrop -d $u')
 MAILER(`local')dnl
 MAILER(`smtp')dnl

# /usr/sfw/bin/gmake sendmail-maildrop.cf
# cp -p sendmail-maildrop.cf /etc/mail/sendmail.cf
# svcadm refresh smtp:sendmail

ここまでやってから気がついたのですが、/usr/ccs/bin/makeを使えとMakefileに書かれていました 😛

bogofilter導入

SPAMフィルタに利用しているbogofilterと、日本語わかちがきに必要となるkakasi、nkfはCSWでパッケージングされていないため、ソースからコンパイル、インストールします(spamassassinはバイナリパッケージがあります)。
ちなみに.mailfilterは以下のような記述にしています(抜粋)。

PATH=/bin:/usr/bin:/usr/local/bin:/opt/csw/bin

MAILDIR="Maildir"
DEFAULT="$MAILDIR/"

BOGORESULT=`nkf -ZSme|kakasi -w|bogofilter -epu|reformail -X'X-Bogosity:'`
xfilter "reformail -i'${BOGORESULT}'"
if (/^X-Bogosity: Spam/:h)
  to "$MAILDIR/.Spam/"

bogofilterのwordlist.dbは旧メールサーバでdump(bogoutil)してから再インポートします。

famのエラー対応

このままだとFAQにもなっているfamのエラーメッセージが出力されます
解決方法はFAQの通りなのですが、CSWfamパッケージは依存パッケージとして導入されており、/etc/inetd.confにもエントリができています。
ちょっと悩んだのですが、Solaris 10の場合/etc/inetd.confにエントリを追加するだけでは不十分でinetconvを実行してsmf管理下にする必要があったようです。

# inetconv
inetconv: Notice: Service manifest for 100235/1 already generated as /var/svc/manifest/network/rpc/100235_1-rpc_ticotsord.xml, skipped
inetconv: Notice: Service manifest for 100083/1 already generated as /var/svc/manifest/network/rpc/100083_1-rpc_tcp.xml, skipped
inetconv: Notice: Service manifest for 100068/2-5 already generated as /var/svc/manifest/network/rpc/100068_2-5-rpc_udp.xml, skipped
sgi_fam/1-2 -> /var/svc/manifest/network/rpc/sgi_fam_1-2-rpc_tcp.xml
Importing sgi_fam_1-2-rpc_tcp.xml ...Done

これでfamのエラーも出なくなりました。

Sorry, the comment form is closed at this time.