# apt-get remove --purge exim4 exim4-base exim4-config![]()
# rm -r /etc/exim![]()
# rm /etc/cron.weekly/exim![]()
# apt-get install qmail-src ucspi-tcp-src![]()
# build-ucspi-tcp![]()
# build-qmail![]()
# apt-get -f install![]()
# apt-get update![]()
# apt-get upgrade![]()
# /etc/init.d/qmail start![]()
# ps aux | grep qmailで確認
# apt-get install mailutils![]()
参考: Debianでqmailをパッケージからインストールする。〜Debian関係
注: 以下の作業が本当に必要であるかは自信がないです。
$ ls /var/qmail
# id alias # id qmaild # id qmaill # id qmailp
qmail ユーザ/グループはシステムユーザ/グループであるが,
システムユーザの uid は adduser に--systemオプションを付けることで
自動的に debian policy に沿ったuidをつけてくれる.
グループユーザに関しては gid 100-999 の中で空いている番号を使う.
(詳細は
Debian Policy Manual - The Operating System)
特に 1000-29999 は gate-system が使用するので,使わない.あらかじめ変更する.
# deluser alias # deluser qmaild # deluser qmaill # deluser qmailp
# groupadd -g 110 nofiles # adduser --system --ingroup nofiles --home /var/qmail/alias alias # adduser --system --ingroup nofiles --home /var/qmail qmaild # adduser --system --ingroup nofiles --home /var/qmail qmaill # adduser --system --ingroup nofiles --home /var/qmail qmailp
# grep qmail /etc/group
$ groupmod -g 109 qmail
# deluser qmailq # deluser qmailr # deluser qmails
# adduser --system --ingroup qmail --home /var/qmail qmailq # adduser --system --ingroup qmail --home /var/qmail qmailr # adduser --system --ingroup qmail --home /var/qmail qmails
制御ファイルに以下の内容が記述されていることを確認
/var/qmail/control/defaultdomain ep.sci.hokudai.ac.jp /var/qmail/control/locals localhost usuzumi.ep.sci.hokudai.ac.jp /var/qmail/control/me usuzumi.ep.sci.hokudai.ac.jp /var/qmail/control/plusdomain ac.jp /var/qmail/control/rcpthosts localhost usuzumi.ep.sci.hokudai.ac.jp
$ lv /var/qmail/control/defaultdomain $ lv /var/qmail/control/locals $ lv /var/qmail/control/me $ lv /var/qmail/control/plusdomain $ lv /var/qmail/control/rcpthosts
yellow によって, ep.sci.hokudai.ac.jp の MX を向けられてい
る場合,
「
別ホストあてのメイルも受け取りたい」に従って作業する.
# echo ep.sci.hokudai.ac.jp >> /var/qmail/control/locals
# echo ep.sci.hokudai.ac.jp >> /var/qmail/control/rcpthosts
locals に書かれる情報は"ローカル処理すべきドメイン名"である.
また,「 ホスト名を隠したい」に従って,ドメイン部のないアドレスにつける ホスト名を設定する.
# echo ep.sci.hokudai.ac.jp >> /var/qmail/control/defaulthost
# chmod 644 /var/qmail/control/defaulthost
そのほかに,以下を設定も行う.
# echo 10000000 >> /var/qmail/control/databytes
# chmod 644 /var/qmail/control/databytes
# echo 259200 >> /var/qmail/control/queuelifetime
# chmod 644 /var/qmail/control/queuelifetime
それぞれのファイルには最終的に以下のように書き込まれていればよい.
/var/qmail/control/databytes 10000000 /var/qmail/control/defaultdomain ep.sci.hokudai.ac.jp /var/qmail/control/defaulthost ep.sci.hokudai.ac.jp /var/qmail/control/locals localhost usuzumi.ep.sci.hokudai.ac.jp ep.sci.hokudai.ac.jp /var/qmail/control/me usuzumi.ep.sci.hokudai.ac.jp /var/qmail/control/plusdomain ac.jp /var/qmail/control/queuelifetime 259200 /var/qmail/control/rcpthosts localhost usuzumi.ep.sci.hokudai.ac.jp ep.sci.hokudai.ac.jp
これら制御ファイルの効果は, qmail-showctl コマンド (詳細はqmail-showctl(8)) で確認できる.
$ /var/qmail/bin/qmail-showctl
以前, gate 登録システムによって DNS 登録を行った直後に
サーバの構築を行ったことがあるがエラーが出力された.
これは DNS の逆引きができなかった事が原因となっていた.
(DNS の逆引きは EP サーバではサービスしていない.
しばらくすると北大大計の DNS サーバで逆引きできるようになる)
このような場合,DNS 検索をしないスクリプトを用いて設定を行う.
# ./config-fast usuzumi.ep.sci.hokudai.ac.jp
その結果は以下のとおり.
/var/qmail/control/defaultdomain ep.sci.hokudai.ac.jp /var/qmail/control/locals usuzumi.ep.sci.hokudai.ac.jp /var/qmail/control/me usuzumi.ep.sci.hokudai.ac.jp /var/qmail/control/plusdomain ac.jp /var/qmail/control/rcpthosts usuzumi.ep.sci.hokudai.ac.jp
当然この場合も先のように各 control ファイルに必要なものを書き込んでおく.
システムのアドレスを設定する.
# cd /var/qmail/alias
# echo '&epmail' > .qmail-root
# echo '&root' > .qmail-postmaster
# echo '&root' > .qmail-mailer-daemon
# echo '&root' > .qmail-bin
# echo '&root' > .qmail-daemon
# echo '&root' > .qmail-games
# echo '&root' > .qmail-ingres
# echo '&root' > .qmail-nobody
# echo '&root' > .qmail-system
# echo '&root' > .qmail-toor
# echo '&root' > .qmail-uucp
# echo '&root' > .qmail-usenet
# echo '&root' > .qmail-anonymous
# echo '&root' > .qmail-mail
# echo '&epwww' > .qmail-www
# echo '&epdns' > .qmail-dns
# echo '&epnews' > .qmail-news
# chmod 644 .qmail-*
以上により,
postmaster, mailer-daemon, bin, daemon, games, ingres,
nobody, system, toor, uucp, usenet, anonymous, mail
あてのメールは root に転送され,root あてのメールは epmail に転送される.
詳細は dot-qmail(5) .
/var/qmail/bin 以下のコマンドにパスを通す.
bash ユーザのために /etc/profile の PATH= の行を編集し,/var/qmail/bin を付け加える.
if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin: /sbin:/bin" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/var/qmail/bin" fi
csh ユーザのために,/etc/csh.cshrc を編集し,同様に付け加える.
# /etc/csh.cshrc: system-wide .cshrc file for csh(1)/tcsh(1).
# $Id: csh.cshrc,v 1.4 1998/06/05 21:04:02 luisgh Exp $
setenv PATH /usr/local/bin:/usr/bin:/bin:/var/qmail/bin
/etc/manpath.config を編集し以下の部分を付け加える.
#MANDATORY_MANPATH /usr/src/pvm3/man ... ... MANDATORY_MANPATH /usr/local/man MANDATORY_MANPATH /var/qmail/man ... # *PATH* *MANPATH* ... ... ... MANPATH_MAP /opt/sbin /opt/man MANPATH_MAP /var/qmail/bin /var/qmail/man ... # *PATH* *CATPATH* ... ... ... MANDB_MAP /opt/man /var/cache/man/opt MANDB_MAP /var/qmail/man /var/qmail/man
/etc/profile に以下を書き加える.
...
export PATH PS1
umask 022
MAIL="$HOME/Mailbox"
MAILDROP="$HOME/Mailbox"
export MAIL MAILDROP
/etc/csh.cshrc に以下を書き加える.
...
set prompt = "%U%m%u:%B%~%b%# "
endif
endif
setenv MAIL $HOME/Mailbox
setenv MAILDROP $HOME/Mailbox
なお,各ユーザのホームディレクトリのパーミッションは
755 でないとメール配送時にエラーが出るらしい.
# cp /var/qmail/boot/home /var/qmail/rc
# csh -cf '/var/qmail/rc &'
qmail は起動する. qmail-send, splogger qmail, qmail-lspawn, qmail-rspawn, qmail-clean を ps で確認する.
次にブート時に qmail を走らせるようにするため,以下のことを行う.
ブートスクリプトに関わる設定ファイルは /etc/inittab と
/etc/init.d/rc である.
/etc/init.d/qmail に以下の起動スクリプトを記述し,実行許可を与える.
# 起動スクリプト
csh -cf '/var/qmail/rc &'
# chmod 755 /etc/init.d/qmailqmail
/etc/rc[2-5].d/ の下にこれへのリンクを置く.
この数字(2-5)は RUNLEVEL に対応する.
2-5 はマルチユーザモード,0 は halt, 1 は single user mode,
6 は reboot に対応する.
# cd /etc/rc2.d/
# ln -s ../init.d/qmail S80qmail
# ls -al S80qmail
lrwxrwxrwx 1 root root 15 S80qmail -> ../init.d/qmail
# cd /etc/rc3.d/
(RUNLEVEL 3-5 も同様)
このリンクの名前の S に続く 2 桁の数字(80)が,起動のタイミングを決定する.
reboot して,qmail デーモン群の起動を ps で確認.
注: この作業前に [2.2.2.2], [2.2.2.3] の ~/Maildir の作成と .qmail の編集が必要かもしれません.
文献 6 に従い,配送テスト (ローカル配送,リモート送り出しテスト) を行う.
自分に送ってみる.
hoge は自分のユーザ名に変え,以下のコマンドを実行する.
~hoge/Mailbox にメールが送られることを確認.
$ echo to: hoge | /var/qmail/bin/qmail-inject
存在しない宛先に送ってみる. バウンスメールが~hoge/Mailbox に送られてくるのなら OK.
$ echo to: nonexistent | /var/qmail/bin/qmail-inject
他のホスト上のアカウントへ送ってみる.届いていれば OK . 届かなければ,/var/log/syslog を参照して原因を追求する.
$ echo to: hoge@gfd-dennou-org | /var/qmail/bin/qmail-inject
文献 4, 5に従う.
ただし,sendmail ではなく, exim がインストールされている場合は, exim を無効にする.
exim のブートスクリプトは,/etc/init.d/exim4 で,
これに /etc/rc[2-5].d/S20exim, /etc/rc{1,6}.d/K20exim
からリンクが張られている.これを無効にする.
# chmod 000 /etc/init.d/exim4
# mv /etc/init.d/exim4 /etc/init.d/exim4.bak
また,cron から呼び出される処理も無効にする.
/etc/cron.daily/exim4-base の先頭の方に次の行を書き足す.
3 行目の [ と ! の間にはスペースが一つあることに注意.
詰めて書くとエラーが出る.
#!/bin/sh# by TOYODA Eizi, 1999-09-22. We need not exim. if [ ! -f /etc/exim.conf ]; then exit 0 fi# Uncomment the following lines to get daily e-mail reports
...
これで /etc/cron.daily/exim は無効になり,
いずれ /etc/exim.conf を使って設定を行った暁には本当に動作するだろう.
(豊田, 1999/09/22)
次に文献 4, 5の通りの「sendmail 置き換え」作業を行う.
# chmod 000 /usr/lib/sendmail
# chmod 000 /usr/sbin/sendmail
# mv /usr/lib/sendmail /usr/lib/sendmail.bak
# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
最後にリンクを張ったのは,「qmail の "sendmail" wrapperを
MUA から使えるようにする」ため.
/usr/lib/sendmail は,cron や gate-system がメールを出すのに使うので,
リンクを張るのを忘れないこと.
後に tcpserver をインストールするので,ここでの設定は最終的に反映されない.
しかし,メールサーバはたくさんのアプリケーションをインストールするため
インストールの設定が確かであるか一つずつ確かめた方が無難である.
そこで,ここでは smtp 受信テストを行うための設定を行う.
/etc/inetd.conf に以下を一行で追加.
#:OTHER: Other services
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
これを有効にするために,inetd に HUP を送る.
# kill -HUP xxxx
xxxx は /usr/sbin/inetd のプロセス番号 (ps aux |grep inetdでわかる).
他のホストから自分に送ってみる.詳しくは,文献7.
http://jaist.dl.sourceforge.net/sourceforge/checkpw/より,checkpw-1.02.tar.gz を取得,展開.
checkpw-0.80/INSTALL に従ってコンパイルする.
具体的には以下のコマンドを実行する.
# tar zxvf checkpw-1.02.tar.gz
$ cd checkpw-1.02/
# make
# make setup check
/bin/checkapoppw ができる.
/etc/inetd.conf に以下を一行で追加し,inetd に HUP を送る.
#:OTHER: Other services
# SMTP 2001-03-12 smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd pop-3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup grey.ep.sci.hokudai.ac.jp /bin/checkapoppw /var/qmail/bin/qmail-pop3d Maildir
# kill -HUP xxxx
xxxx は /usr/sbin/inetd のプロセス番号.
すでに ~/Mailbox へ配送するための環境変数は設定した.
apop によるメールの読み出しは EP サーバでは maildir 形式を用いる.
はじめに,環境変数 MAILDIR を設定する.
環境変数の設定は ~/Mailbox への配送でも行ったが,
bash は /etc/profile,csh は /etc/csh.cshrc に書き込む.
/etc/profile に次の行を加える.
...
umask 022
MAIL="$HOME/Mailbox"
MAILDROP="$HOME/Mailbox"
export MAIL MAILDROP
MAILDIR="$HOME/Maildir/"
export MAILDIR
/etc/csh.cshrc には次の 1 行を加える.
...
setenv MAIL $HOME/Mailbox
setenv MAILDROP $HOME/Mailbox
setenv MAILDIR $HOME/Maildir/
次に配送テストのために一般ユーザで次の設定を行う.
$ /var/qmail/bin/maildirmake ~/Maildir
次に ~/Maildir への配送を qmail に指示する (.qmail へ配送先ディレクトリを記述する).
$ echo ./Maildir/ > ~/.qmail
$ chmod 600 ~/.qmail
.qmail のパーミッションは,600 か 644 でなければならない.
要は,実行許可が出ていないことと
オーナー以外に書き込みが許可されていないことが要求される.
~/Maildir/.password ファイルを作る.
$ echo 'APOPPASSWORD ' > ~/Maildir/.password
$ chmod 600 ~/Maildir/.password
この中身(APOPPASSWORD)が, apop でメールを読むときの認証パスワードとなる.
grey の外のホストから apop 対応メーラー(例. eudora-J1.3.8.8r6 for
Macintosh)を用いて
apop サーバを grey に指定して grey 上の自分のアカウントあてに届いたメールを
読んでみる.
imap の最新版をとってくる.2009/10/20 現在の最新版は,imap-2007e.
ftp://ftp.cac.washington.edu/imap/imap.tar.Z
から取得する.
$ cd /usr/local/src
# tar xzvf imap.tar.Z
$ cd imap-2007e
パスワード認証形式は CRAM-MD5 を使う.
./doc/md5.txt によると make 時に PASSWDTYPE=nul と
与えれば,MD5 形式のパスワードを使うことができるらしい.
しかし nul を指定すると平文でのパスワードを受け付けてくれなくなる.
これではoutlook express ユーザーが接続できないので
PASSWDTYPE=std でコンパイルすることにする.
# make slx PASSWDTYPE=std SSLTYPE=none
なお,PASSWDTYPE が nul でも std でもログインパスワード (/etc/passwd)
での imap ログインは
出来ないことは確認している.
docs/md5.txt から抜粋.
... If the CRAM-MD5 authentication database exists, then plaintext password authentication (e.g. the LOGIN command) will also use the CRAM-MD5 passwords instead of UNIX passwords. Alternatively, it is possible to build the IMAP toolkit so that plaintext password authentication is disabled entirely, by using PASSWDTYPE=nul, e.g. ...
次にコンパイルされた imapd をシステムに反映させるため しかるべき場所へコピーする.
# cp imapd/imapd /usr/local/sbin/imapd
/etc/services に imap2 ポートがあることを確認する.
... ... netbios-ssn 139/udp imap2 143/tcp # Interim Mail Access P 2 and 4 imap2 143/udp snmp 161/udp # Simple Net Mgmt Proto ... ...
/etc/inetd.conf に以下の一行を加える.
# APOP 2001-03-12 pop-3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup grey.ep.sci.hokudai.ac.jp /bin/checkapoppw /var/qmail/bin/qmail-pop3d Maildirimap2 stream tcp nowait root /usr/local/sbin/imapd imapd
inetd に HUP を送る.
# kill -HUP xxxx
xxxx は inetd のプロセス番号.
imap でのメール読みだしは ~/Mailbox から行なわれる.
ここでテストメール受信を行なうため,管理者自身のホームディレクトリの
~/.qmail を編集する.
~/.qmail を編集. 以下の一行を加える.
./Mailbox
メールが ~/Mailbox へ配送されるようになる.
./docs/md5.txt に従って, /etc/cram-md5.pwd を書く.
これが CRAM_MD5 の認証データベースファイルとなる. 以下がその書式.
ユーザ名と imap 用パスワードの間は tab で区切るとされている (スペースではない).
以下のコマンドでユーザ名とパスワードを確認
# cat -A /etc/cram-md5.pwd
# CRAM-MD5 authentication database
# Entries are in form <user><tab><password>
# Lines starting with "#" are comments
mondo4^Ixxxxxxxx$
root 以外読み込めないようにする
# chmod 400 /etc/cram-md5.pwd
CRAM_MD5 の認証データベースファイル /etc/cram-md5.pwd の書き込みには root 権限が要る.
そのため imap 認証のパスワードを各ユーザが編集することはできない.
そこで apop 認証パスワード ~/Maildir/.password を読み出して
/etc/cram-md5.pwd を生成するスクリプト imappwdbg を書いた.
これを root 権限で定期的に実行すれば(遅れはあるものの)/etc/cram-md5.pwd が更新される.
パーミッションを755にするのを忘れないこと!
(前回の構築作業では追加したスクリプトに対して実行許可を与えるのを忘れてエラーが出ることが多かった)
注: 実行許可を与えると, 先程書き加えた mondo のパスワードは毎時 50 分に /etc/cram-md5.pwd から消えてしまい, メーラーによる閲覧ができなくなる.
そのため, 今後のテストメールの際には, 毎回 /etc/cram-md5.pwd を手動で書き換えるなどの対応を行うこと.
# chmod 755 /etc/cron.daily/imappwdbg
より頻繁にこのデータベースを更新するために cron を用いる.root で以下作業を行う.
# crontab -e
以下のように編集する.
50 * * * * /etc/cron.daily/imappwdbg
usuzumi の外のホストから,imap 対応メーラー(例. Netscape Communicator 4 for Macintosh)を用いて
imap サーバを usuzumi に指定して,usuzumi 上の自分のアカウントあてに届いたメールを読んでみる.
パソコンのメールソフトを使ってメールを利用するユーザは多いと考えられることから
mail が smtp 要求を受けるべきは
qmail の FAQ 5.4「特定のクライアントにだけリレーとして使わせたい」
(文献 1)に従って作業を行う.
この FAQ では tcpserver を使うやり方と tcp-wrappers を使うやり方の二つが述べられている.
tcpserver の導入によって,同時に多くの smtp 要求を受け付けられ
接続の記録が取れるようになる (文献 2) という利点から
tcpserver を使うことにする.
文献 2 に従って,qmail-smtpd の呼び出しを inetd から tcpserver に移す.
root になって /etc/inetd.conf 中の smtp の行をコメントアウト(行頭に # を付す)
して,inetd に HUP を送る.
これによって,qmail-smtpd が inetd から呼び出されなくなる.
tcpserver は ucspi-tcp ツール群のひとつの機能である.
ucspi-tcp ツール群のうち tcpserver は入ってくる TCP 接続を受け付けるプログラムである.ucspi-tcp パッケージは ucspi-tcp-src によってパッケージ化されているので, まず uscpi-tcp-src をインストールする.
# apt-get install ucspi-tcp-src
# build-ucspi-tcp
途中でいくつか質問をされるが, デフォルトで進む.
qmaild の UID, nofiles の GID を確認する.
$ id qmaild
以下を実行する.
# tcpserver -u xxxx -g yyyy 0 smtp /var/qmail/bin/qmail-smtpd &
xxxx: qmaild の UID .yyyy: nofiles の GID .
inetd から qmail-smtpd を呼び出していたときと同様の受信テストを行い inetd から tcpserver への移行の成否を確認する.
次に qmail と同様に,ブート時に起動するようにする. /etc/init.d/tcpserver に以下を記述する.編集後 root に実行許可を出す.
#!/bin/sh
#
# smtp
/usr/bin/tcpserver -u xxxx -g yyyy 0 smtp /var/qmail/bin/qmail-smtpd &
# chmod 755 /etc/init.d/tcpserver
/etc/rc[2-5].d/ の下にこれへのリンクを置く.
# cd /etc/rc2.d/
# ln -s ../init.d/tcpserver S80tcpserver
# ls -al S80tcpserver
lrwxrwxrwx 1 root root 15 S80tcpserver -> ../init.d/tcpserver
# cd /etc/rc3.d/
(RUNLEVEL 3-5 も同様)
smtp 中継を許可するホストを指定する.まず,文献 1 に従って,
/etc/tcp.smtp を書く.
例えば,133.87.52.40 という IP アドレスのホストからの smtp 中継を許可するためには,
この1行目のように書く.2 行目の 127. はローカルホストを指す.これは常に書くこと.
133.87.52.40:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
次に以下のコマンドを実行する.tcp.smtp を元に /etc/tcp.smtp.cdb ができる.
# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
tcpserver 起動スクリプト /etc/init.d/tcpserver の起動行は以下のように 編集しなおす(1 行で書く).
/usr/bin/tcpserver -v -x /etc/tcp.smtp.cdb -u xxxx -g yyyy 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
(xxxx: qmaild の UID . yyyy: nofiles の GID . )
追加された部分を説明すると
-x /etc/tcp.smtp.cdb はデータベースファイル /etc/tcp.smtp.cdb
を参照させるための設定である.
また,接続の記録を取るために -v オプションと splogger への受け渡しが記述されている.
usuzumi を reboot する. tcpserver の起動を確認する.
先ほど /etc/tcp.smtp に書いた IP アドレス(ここでは, 133.87.52.40)を持つパソコンから
メーラー(例. eudora-J1.3.8.8r6)を使って,smtp サーバを usuzumi に設定し,
usuzumi 以外の任意のホストにあるアカウント宛のメールを発信してみる.
/var/log/syslog に残るログは,以下のようなものとなる事を確認する.
Mar 6 10:28:29 usuzumi smtpd: 1141608509.874210 tcpserver: status: 1/40
Mar 6 10:28:29 usuzumi smtpd: 1141608509.874295 tcpserver: pid 1896 from 133.87.45.145
Mar 6 10:28:55 usuzumi smtpd: 1141608535.898609 tcpserver: ok 1896 usuzumi.ep.sci.hokudai.ac.jp:133.50.160.52:2
Mar 6 10:28:55 usuzumi smtpd: 1141608535.952798 tcpserver: end 1896 status 0
Mar 6 10:28:55 usuzumi smtpd: 1141608535.952857 tcpserver: status: 0/40
gate-system から登録 IP アドレス一覧を受け渡してもらい /etc/tcp.smtp.cdb を自動生成する.
そのために, 標準入力から IP アドレスリストを読み込み,
/etc/tcp.smtp を書くスクリプトを書いた.
これを /usr/local/sbin/list-2-tcp とする. root への実行許可を忘れずに.
# chmod 755 /usr/local/sbin/list-2-tcp
/usr/local/sbin/tcp_smtp_cdb を以下のように書く. root への実行許可を忘れずに. gate の ip データベース更新時には, gate-system によってこのスクリプトが呼び出される.
tcp_smtp_cdbgate-ip-show, gate-ip-list は gate-system のコマンドである.
# chmod 755 /usr/local/sbin/tcp_smtp_cdb
inetd から呼び出されていた pop, imap の受付を tcpserver に移すには
/etc/inetd.conf の pop, imap の行をコメントアウト(inetd の停止
と同じ作業を行う)した上で
tcpserver 起動スクリプト /etc/init.d/tcpserver に pop ,imap の行を加えて
(pop, imap 共に一行で)再起動する.
# reboot
ログは以下のようになる.
Jul 28 01:00:25 usuzumi pop3d: 933091225.430984 tcpserver: status: 1/40
Jul 28 01:00:25 usuzumi pop3d: 933091225.431641 tcpserver: pid 2535 from 133.50.133.146
Jul 28 01:00:25 usuzumi pop3d: 933091225.439887 tcpserver: ok 2535 usuzumi.ep.sci.hokudai.ac.jp:133.87.45.26:110
skygrey.sci.hokudai.ac.jp:133.87.52.40::2055
Jul 28 01:00:25 usuzumi pop3d: 933091225.498577 tcpserver: end 2535 status 256
Jul 28 01:00:25 usuzumi pop3d: 933091225.498914 tcpserver: status: 0/40
Jul 28 00:45:57 usuzumi imapd: 933090357.824565 tcpserver: status: 1/40
Jul 28 00:45:57 usuzumi imapd: 933090357.825841 tcpserver: pid 2394 from 133.50.133.134
Jul 28 00:45:57 usuzumi imapd: 933090357.835252 tcpserver: ok 2394 usuzumi.ep.sci.hokudai.ac.jp:133.87.45.26:143
geomacg.sci.hokudai.ac.jp:133.50.133.134::1030
Jul 28 00:46:57 usuzumi imapd: 933090417.606449 tcpserver: end 2394 status 0
Jul 28 00:46:57 usuzumi imapd: 933090417.606574 tcpserver: status: 0/40
ftp://ftp.ep.sci.hokudai.ac.jp/pub/mail/ezmlm/ezmlm-0.53.tar.gz を取得,展開する. ezmlm-0.53/INSTALL に従って作業を行う.
$ tar xfvz ezmlm-0.53.tar.gz
$ cd ezmlm-0.53/
$ make
$ make man
$ su
# make setup
もし auto-str エラー とでたら, error.h の
extern int errno; を
#include <errno.h> に書き換える.
ezmlm-manage.o エラー もしくは
ezmlm-return.o エラー とでたら,
ezmlm-manage.c あるいは ezmlm-return.c の先頭に #include "log.h"
を書き込む.
qmail のコマンドにパスを通したのに習って
/usr/local/bin/ezmlm/ 以下の ezmlm のコマンドバイナリ群にパス通す.
(具体的には以下のファイルの PATH=... の行に/usr/local/bin/ezmlm を追加するだけ)
・/etc/profile PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/var/qmail/bin:/usr/local/bin/ezmlm" ・/etc/csh.cshrc setenv PATH /usr/local/bin:/usr/bin:/bin:/var/qmail/bin:/usr/local/bin/ezmlm$ echo $PATH として変更されていなかったら再起動する.
メーリングリスト(ML)を作成する. ここで, testlist はメーリングリスト名, username は自分のアカウント名.
$ ezmlm-make ~/testlist ~/.qmail-testlist username-testlist ep.sci.hokudai.ac.jp
次に作成した ML に ML 主催者が手動で購読者を追加する.
$ ezmlm-sub ~/testlist username@ep.sci.hokudai.ac.jp
登録が終了したら ML へ投稿してみる.先程登録したアドレスへ届くか確かめる.
$ echo subject:testing | qmail-inject username-testlist@ep.sci.hokudai.ac.jp
次に ML の自動処理コマンドを確かめる.
始めに投稿アーカイブから記事を取り出すコマンドを試す. 記事が送られてくるかを確認する.
ep ドメインの MX が張られていない場合は /var/qmail/control/defaulthost をホスト名までいれたドメイン(フルドメイン)にする必要がある.
$ qmail-inject username-testlist-get.1@ep.sci.hokudai.ac.jp < /dev/null
次に ML 参加者による自動登録抹消を試す.確認メールが送られてくるのでその指示に従い登録抹消する.
ep ドメインの MX が張られていない場合 /var/qmail/control/defaulthost をホスト名までいれたドメイン(フルドメイン)にする必要がある.
$ qmail-inject username-testlist-unsubscribe@ep.sci.hokudai.ac.jp < /dev/null
登録を抹消できたかどうかの確認は ML 登録アドレス一覧を見る.
$ ezmlm-list ~/testlist
http://www.ezmlm.org/archive/0.40/ezmlm-idx-0.40.tar.gz
を取得,展開する.
ezmlm-idx-0.40/INSTALL.idx に従って作業する.
$ tar xfvz ezmlm-idx-0.40.tar.gz
% mv ezmlm-idx-0.40/* ezmlm-0.53/
% cd ezmlm-0.53/
% patch < idx.patch
crontab のありかを調べる.
$ which crontab
/usr/bin/crontab
/usr/bin にあれば先へ進む. 違う場所にある場合は conf-cron にありかを書き込む.
MySQL(解説は http://www.mysql.com/ もしくは
日本語マニュアル)
を使うか否かを決定.
ここでは使わないこととして先に進む.使う場合にはこの段階でやるべき作業がある.
$ make clean
$ make; make man
$ make jp
最後の行は使用言語を選ぶものである.jp は日本語を意味する.
これによって自動管理要請に ezmlm が応えてユーザに送る文言
(詳細)
が日本語になる.
MySQL を使わない場合は以下を実行する(使う場合には異なる作業が要る).
# make std
# make
ここで, ezmlm-sub と ezmlm-unsub のエラーが出た場合は ezmlm-sub.c と ezmlm-unsub.c に #include "log.h" という記述を加える
以下を実行して ezmlm-idx のコマンドバイナリを /usr/local/bin/ezmlm/ 以下にコピーする.
$ su
# make setup
ユーザ eztest を作って ezmlm-idx のコマンドバイナリ群が実行できるか確かめる
(ezmlm-testコマンド).
$ chmod 755 ezmlm-test
$ su
# adduser eztest
# exit
$ su eztest
$ cd ezmlm-0.53/
$ ./ezmlm-test
$ exit
ここで su eztest と行ったが sudo コマンドを用いる場合はデフォルトでは環境変数 $HOME が
ログインしたユーザとなったままとなり正しく実行されないので -H オプションをつけて実行する.
ezmlm-test を実行する.実行する前に /usr/local/bin/ezmlm/ 以下のコマンドバイナリ群に パスが通っているか確認する.
% su eztest
$ cd ezmlm-0.53/
$ ./ezmlm-test
$ exit
% su
# userdel eztest
# groupdel eztest
# rm -r ~eztest/
MUA を使えるようにする
mnews は etch では apt することができない.
よって potato 用の deb パッケージを持ってきて手動でインストールする.
以下よりパッケージ取得.
dpkg でインストール.
# dpkg -i mnews_1.22DebianJP-1.deb
最終更新日:2010/11/11 (山田 圭祐) | Copyright © 2010 epcore |