! Mac OS X で qmail を使う qmail して tcpserver して daemontools する。 !! 参考 * NetBSD で qmail http://www.tunagu.gr.jp/cgi-bin/fswiki/wiki.cgi/isihara?page=NetBSD%A4%C7qmail * The pkgsrc guide - 12.2. Converting packages to use bsd.options.mk http://www.jp.netbsd.org/Documentation/pkgsrc/pkgsrc.html#converting-to-options * Linux Squiare - qmail-date-localtime.patchがダウンロードが出来ないのですが.. http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10623&forum=10&2 * Gururi の日記 - qmail on Mac OS X(not Mac OS X Server) 3 回目/tcpserver をインストールしてみる。 http://slashdot.jp/journal.pl?op=display&uid=14221&id=129333 * Gururi の日記 - qmail on Mac OS X(not Mac OS X Server) 6 回目/daemontools を設定する。 http://slashdot.jp/journal.pl?op=display&uid=14221&id=133730 !! qmail rin@kahori[~]% cd /usr/pkgsrc/mail/qmail rin@kahori[/usr/pkgsrc/mail/qmail]% head options.mk # $NetBSD: options.mk,v 1.13 2005/05/31 10:01:38 dillo Exp $ PKG_OPTIONS_VAR= PKG_OPTIONS.qmail PKG_SUPPORTED_OPTIONS= badrcptto bigdns darwin netqmail outgoingip PKG_SUPPORTED_OPTIONS+= qregex realrcptto sasl syncdir tls viruscan .if ${OPSYS} == "Darwin" PKG_SUGGESTED_OPTIONS= darwin .endif OPTION を指定できるので /etc/mk.conf に書いておく。 とりあえず netqmail のみ。 rin@kahori[/usr/pkgsrc/mail/qmail]% diff -u /etc/mk.conf.20050624 /etc/mk.conf diff -u /etc/mk.conf.20050624 /etc/mk.conf --- /etc/mk.conf.20050624 Wed Jun 29 14:40:08 2005 +++ /etc/mk.conf Wed Jun 29 14:42:05 2005 @@ -9,4 +9,5 @@ PAX=/Volumes/NetBSD/pkg/bin/pax ##PKG_DEBUG_LEVEL= 1 X11_TYPE=xorg +PKG_OPTIONS.qmail=netqmail .endif # end pkgsrc settings rin@kahori[/usr/pkgsrc/mail/qmail]% !!! localtime localtime は pkgsrc に入ってないようなので手動で patch する。 rin@kahori[/usr/pkgsrc/mail/qmail]% sudo wget ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-date-localtime.patch `qmail-date-localtime.patch' ftp.nlc.net.au をDNSに問いあわせています... 203.24.133.1 ftp.nlc.net.au[203.24.133.1]:21 に接続しています... failed: Connection refused. fail した。 プロトコルは http にする。 rin@kahori[/usr/pkgsrc/mail/qmail]% sudo wget http://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-date-localtime.patch `qmail-date-localtime.patch' ftp.nlc.net.au をDNSに問いあわせています... 203.24.133.1 ftp.nlc.net.au[203.24.133.1]:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 2,603 [text/plain] 100%[====================================>] 2,603 6.65K/s 14:44:37 (6.64 KB/s) - `qmail-date-localtime.patch' を保存しました [2603/2603] ソースを取得( work ディレクトリに出来るらしい )するために make する。 rin@kahori[/usr/pkgsrc/mail/qmail]% sudo bmake patch : => Checksum RMD160 OK for netqmail-1.05.tar.gz. Make sure the Makefile and checksum file (/usr/pkgsrc/mail/qmail/distinfo) are up to date. If you want to override this check, type "/usr/pkg/bin/bmake NO_CHECKSUM=yes [other args]". *** Error code 1 Stop. bmake: stopped in /usr/pkgsrc/mail/qmail 怒られた。 不整合? NO_CHECKSUM=yes しておく。 rin@kahori[/usr/pkgsrc/mail/qmail]% sudo bmake NO_CHECKSUM=yes patch : cd /Volumes/NetBSD/pkgsrc/net/ucspi-tcp/work/*-man; for i in 1; do for j in *.$i; do /usr/bin/install -c -o root -g wheel -m 444 $j /Volumes/NetBSD/pkg/man/man$i; done done ===> Registering installation for ucspi-tcp-0.88nb1 ===> Returning to build of qmail-1.03nb10 ===> Patching for qmail-1.03nb10 ===> Applying distribution patches for qmail-1.03nb10 patch する。 rin@kahori[/usr/pkgsrc/mail/qmail]% cd work/qmail-1.03/ rin@kahori[/usr/pkgsrc/mail/qmail/work/qmail-1.03]% sudo patch < ../../qmail-date-localtime.patch patching file date822fmt.c install する。 rin@kahori[/usr/pkgsrc/mail/qmail/work/qmail-1.03]% cd ../../ rin@kahori[/usr/pkgsrc/mail/qmail]% sudo bmake install : => Unwrapping files-to-be-installed. ===> Installing for qmail-1.03nb10 ===> Creating installation directories . changed permissions expected 0755 found 02755 modified ./install ./instcheck # qmail's installer sets strange permissions; set them back /usr/bin/chgrp wheel /var/qmail/bin /usr/bin/chgrp wheel /var/qmail/boot /usr/bin/chgrp wheel /var/qmail/doc /usr/bin/chgrp wheel /var/qmail/man /usr/bin/chgrp wheel /var/qmail/man/cat1 /usr/bin/chgrp wheel /var/qmail/man/cat5 /usr/bin/chgrp wheel /var/qmail/man/cat7 /usr/bin/chgrp wheel /var/qmail/man/cat8 /usr/bin/chgrp wheel /var/qmail/man/man1 /usr/bin/chgrp wheel /var/qmail/man/man5 /usr/bin/chgrp wheel /var/qmail/man/man7 /usr/bin/chgrp wheel /var/qmail/man/man8 /usr/bin/install -c -o root -g wheel -m 444 /Volumes/NetBSD/pkgsrc/mail/qmail/work/README.pkgsrc /Volumes/NetBSD/pkg/share/doc/qmail /usr/bin/install -d -o root -g wheel -m 755 /Volumes/NetBSD/pkg/share/qmail/setup for i in dnsfq dnsip dnsptr hostname install ipmeprint; do /usr/bin/install -c -s -o root -g wheel -m 555 /Volumes/NetBSD/pkgsrc/mail/qmail/work/qmail-1.03/$i /Volumes/NetBSD/pkg/share/qmail/setup; done for i in config config-fast; do /usr/bin/install -c -o root -g wheel -m 555 /Volumes/NetBSD/pkgsrc/mail/qmail/work/qmail-1.03/$i /Volumes/NetBSD/pkg/share/qmail/setup; done ===> Please note the following: =========================================================================== $NetBSD: MESSAGE,v 1.11 2004/08/22 00:10:51 schmonz Exp $ Please read /Volumes/NetBSD/pkg/share/doc/qmail/README.pkgsrc. There are many ways to enable qmail. One popular, well-regarded choice is to follow the directions in Dave Sill's "Life with qmail": Alternatively, you can let pkgsrc do the work by installing the qmail-run package. =========================================================================== ===> Registering installation for qmail-1.03nb10 qmail-1.03nb10 requires installed package checkpassword-0.90 qmail-1.03nb10 requires installed package daemontools-0.76 qmail-1.03nb10 requires installed package qmail-users-1.0 qmail-1.03nb10 requires installed package ucspi-tcp-0.88nb1 rin@kahori[/usr/pkgsrc/mail/qmail]% sudo bmake clean clean-depends !! qmail-run install と一緒に qmail の config までしてくれる。 やはりパッケージシステムは楽だ。 しかし、qmail の設定ファイルは手動でコピーしてるし、/etc/rc.d は使わないので qmail-run は要らなかったか。 rin@kahori[/usr/pkgsrc/mail/qmail-run]% sudo bmake install ===> Installing for qmail-run-20050415 ===> Creating installation directories /usr/bin/install -c -o root -g wheel -m 555 /Volumes/NetBSD/pkgsrc/mail/qmail-run/work/qmail-procmail /Volumes/NetBSD/pkg/bin /usr/bin/install -c -o root -g wheel -m 555 /Volumes/NetBSD/pkgsrc/mail/qmail-run/work/qmail-qfilter-queue /Volumes/NetBSD/pkg/bin /usr/bin/install -c -o root -g wheel -m 555 /Volumes/NetBSD/pkgsrc/mail/qmail-run/work/qmail-qread-client /Volumes/NetBSD/pkg/bin /usr/bin/install -c -o root -g wheel -m 444 /Volumes/NetBSD/pkgsrc/mail/qmail-run/work/README.pkgsrc /Volumes/NetBSD/pkg/share/doc/qmail-run /usr/bin/install -c -o root -g wheel -m 444 /Volumes/NetBSD/pkgsrc/mail/qmail-run/work/mailer.conf /Volumes/NetBSD/pkg/share/examples/qmail-run =========================================================================== The following files should be created for qmail-run-20050415: /etc/rc.d/qmailsmtpd (m=0755) [/Volumes/NetBSD/pkg/share/examples/rc.d/qmailsmtpd] /etc/rc.d/qmailsend (m=0755) [/Volumes/NetBSD/pkg/share/examples/rc.d/qmailsend] /etc/rc.d/qmailqread (m=0755) [/Volumes/NetBSD/pkg/share/examples/rc.d/qmailqread] /etc/rc.d/qmailpop3d (m=0755) [/Volumes/NetBSD/pkg/share/examples/rc.d/qmailpop3d] /etc/rc.d/qmail (m=0755) [/Volumes/NetBSD/pkg/share/examples/rc.d/qmail] =========================================================================== Your fully qualified host name is kahori.local. Putting kahori.local into control/me... Putting kahori.local into control/defaultdomain... Putting kahori.local into control/plusdomain... Putting kahori.local into control/locals... Putting kahori.local into control/rcpthosts... Now qmail will refuse to accept SMTP messages except to kahori.local. Make sure to change rcpthosts if you add hosts to locals or virtualdomains! ===> Please note the following: =========================================================================== $NetBSD: MESSAGE,v 1.3 2004/08/23 03:47:48 schmonz Exp $ Please read /Volumes/NetBSD/pkg/share/doc/qmail-run/README.pkgsrc. To enable qmail for... Local and outgoing deliveries: - Check the configuration files in /Volumes/NetBSD/pkg/etc/qmail. - Modify /etc/mailer.conf (see share/examples/qmail-run/mailer.conf). - Set qmailsend=YES in /etc/rc.conf. SMTP: - Set qmailsmtpd=YES in /etc/rc.conf. POP3 (only for Maildirs): - Set qmailpop3d=YES in /etc/rc.conf. To make the queue visible to local non-root users: - Set qmailqread=YES in /etc/rc.conf. - Change the mailq entry in /etc/mailer.conf to qmail-qread-client. =========================================================================== ===> Registering installation for qmail-run-20050415 qmail-run-20050415 requires installed package qmail-1.03nb10 rin@kahori[/usr/pkgsrc/mail/qmail-run]% !! Maildir Maildir を作るために /usr/pkg/share/doc/qmail/INSTALL.maildir にあるとおりに実行する。 rin@kahori[~]% maildirmake $HOME/Maildir rin@kahori[~]% echo ./Maildir/ > ~/.qmail !! 設定ファイル contorol や alias を他の計算機( sakura )から kahori へコピーする。 rin@sakura[~]% tar cf - . | ssh kahori '(cd usr/local/qmail; tar xf -)' rin@kahori[~/usr/local/qmail]% sudo cp * /var/qmail/control/ rin@kahori[~/usr/local/qmail]% sudo cp .qmail-* /var/qmail/control/ !! 起動確認 rin@kahori[/var/qmail/boot]% sudo cp home /var/qmail/rc rin@kahori[/var/qmail/boot]% cd /var/qmail rin@kahori[/var/qmail]% sudo csh /var/qmail/rc & sudo csh /var/qmail/rc & [1] 413 rin@kahori[/var/qmail]% ps aux | grep qmail rin 419 3.0 0.1 18172 352 std S+ 12:03AM 0:00.01 grep qmail qmails 413 0.0 0.3 18120 776 std SN 12:02AM 0:00.06 qmail-send qmaill 414 0.0 0.3 18076 780 std SN 12:02AM 0:00.01 splogger qma root 415 0.0 0.3 18072 704 std SN 12:02AM 0:00.00 qmail-lspawn qmailr 416 0.0 0.3 18072 704 std SN 12:02AM 0:00.00 qmail-rspawn qmailq 417 0.0 0.3 18064 724 std SN 12:02AM 0:00.01 qmail-clean rin@kahori[/var/qmail]% sudo kill 413 rin@kahori[/var/qmail]% [1] + done sudo csh /var/qmail/rc rin@kahori[/var/qmail]% ps aux | grep qmail !! tcpserver tcpserver の設定ファイルを既存の計算機からコピーする。 rin@sakura[~/usr/local/tcpserver/etc]% tar cf - . | ssh kahori '( cd usr/local/tcpserver/etc ; tar xfv - )' . ./tcp.pop3 ./tcp.pop3.cdb ./tcp.smtp ./tcp.smtp.cdb !! daemontools daemontools の設定ファイルを既存の計算機からコピーする。 rin@sakura[~/usr/local/qmail/supervise]% tar cf - . | ssh kahori '( cd usr/local/qmail/supervise ; tar xfv - )' . ./pop3d ./pop3d/run ./qmail ./qmail/run ./smptd ./smptd/run /etc のほうにコピー。 rin@kahori[~/usr/local/tcpserver/etc]% sudo cp * /etc/ rin@kahori[~/usr/local/qmail]% sudo mv supervise /var/qmail/ !!! svscan とか daemontools 用 ディレクトリ作成 rin@kahori[~]% sudo ln -s /usr/pkg/bin /command rin@kahori[~/usr/local]% sudo mkdir -p /service rin@kahori[~/usr/local]% sudo ln -s /var/qmail/supervise/qmail/ /service/qmail まだ起動していない。 つぎの作業へ。 いわゆる /etc/rc.d は Mac OS X の /Library/StartupItems に該当する。 依存関係を考えるのが面倒だったので起動項目の設定は貰った。 http://slashdot.jp/journal.pl?op=display&uid=14221&id=133730 Start Stop Restart 項目は必須ではないけどせっかくだからそのまま利用させていただく。 rin@kahori[~/usr/local]% wget http://gururi.com/qmail/daemontools_sss.tgz rin@kahori[~/usr/local]% tar xzf daemontools_sss.tgz rin@kahori[~/usr/local]% sudo mv Daemontools /Library/StartupItems/ path を追加しとく。 rin@kahori[~]% diff -u /Library/StartupItems/Daemontools/Daemontools.src /Library/StartupItems/Daemontools/Daemontools --- /Library/StartupItems/Daemontools/Daemontools.src Wed Jul 6 23:09:57 2005 +++ /Library/StartupItems/Daemontools/Daemontools Wed Jul 6 23:14:23 2005 @@ -2,7 +2,7 @@ . /etc/rc.common -export PATH=/usr/local/bin:${PATH} +export PATH=/command:/usr/local/bin:${PATH} svcdir=/service StartService () !! /etc/hostconfig /etc/hostconfig に DAEMONTOOLS=-YES- を追加。 こうしないと /Library/StartupItems/Daemontools/Daemontools が start の条件分岐を通らない。 rin@kahori[~]% diff -u /etc/hostconfig.20050521 /etc/hostconfig --- /etc/hostconfig.20050521 Wed Jul 6 22:58:33 2005 +++ /etc/hostconfig Wed Jul 6 22:59:09 2005 @@ -28,3 +28,5 @@ COREDUMPS=-NO- VPNSERVER=-NO- CRASHREPORTER=-YES- +DAEMONTOOLS=-YES- + !! 起動終了確認 rin@kahori[~]% sudo /Library/StartupItems/Daemontools/Daemontools start Starting daemontools rin@kahori[~]% ps aux | grep qmail qmails 768 0.0 0.1 18120 360 std S 11:17PM 0:00.01 qmail-send qmaill 769 0.0 0.1 18076 324 std S 11:17PM 0:00.00 splogger qma root 770 0.0 0.1 18072 316 std S 11:17PM 0:00.01 qmail-lspawn qmailr 771 0.0 0.1 18072 316 std S 11:17PM 0:00.00 qmail-rspawn qmailq 772 0.0 0.1 18064 308 std S 11:17PM 0:00.00 qmail-clean rin@kahori[~]% rin@kahori[~]% sudo /Library/StartupItems/Daemontools/Daemontools stop Stopping daemontools rin@kahori[~]% ps aux | grep qmail rin@kahori[~]% !! OS 起動時 Mac OS X を起動の前に daemontools を install したのが pkgsrc のところなので以下のように変更。 rin@kahori[~]% diff -u /Library/StartupItems/Daemontools/StartupParameters.plist.src /Library/StartupItems/Daemontools/StartupParameters.plist --- /Library/StartupItems/Daemontools/StartupParameters.plist.src Wed Jul 6 23:23:55 2005 +++ /Library/StartupItems/Daemontools/StartupParameters.plist Wed Jul 6 23:25:48 2005 @@ -1,7 +1,7 @@ { Description = "daemontools"; Provides = ("daemontools"); - Requires = ("Network", "NetInfo", "Network Configuration"); + Requires = ("Network", "NetInfo", "Network Configuration", "pkgsrc"); Uses = ("Network"); OrderPreference = "Last"; Messages = Mac OS X を起動させる。 rin@kahori[~]% ps aux | grep svscan root 348 0.0 0.1 18096 300 ?? S 8:09PM 0:00.03 svscan /serv rin@kahori[~]% ps aux | grep qmail qmails 351 0.0 0.1 18120 360 ?? S 8:09PM 0:00.02 qmail-send qmaill 352 0.0 0.1 18076 324 ?? S 8:09PM 0:00.00 splogger qma root 353 0.0 0.1 18072 316 ?? S 8:09PM 0:00.01 qmail-lspawn qmailr 354 0.0 0.1 18072 316 ?? S 8:09PM 0:00.01 qmail-rspawn qmailq 355 0.0 0.1 18064 308 ?? S 8:09PM 0:00.00 qmail-clean !! Postfix デフォルトでは Posftfix が自動起動するようになっているので設定を変更。 MAILSERVER=-NO- する。 % cat /etc/hostconfig ## # /etc/hostconfig ## # This file is maintained by the system control panels ## # Network configuration HOSTNAME=-AUTOMATIC- ROUTER=-AUTOMATIC- # Services AFPSERVER=-YES- AUTHSERVER=-NO- AUTOMOUNT=-YES- CUPS=-YES- IPFORWARDING=-NO- IPV6=-YES- MAILSERVER=-NO- ←これ NETINFOSERVER=-AUTOMATIC- NFSLOCKS=-AUTOMATIC- NISDOMAIN=-NO- RPCSERVER=-AUTOMATIC- TIMESYNC=-YES- QTSSERVER=-NO- WEBSERVER=-YES- SMBSERVER=-NO- DNSSERVER=-NO- COREDUMPS=-NO- VPNSERVER=-NO- CRASHREPORTER=-YES- DAEMONTOOLS=-YES-