qmail メールサーバ設定
もし、あなたがダイナミックDNSでメールサーバを運用していてDUL(Dialup User List)などに登録されているために、メールが不配になってしまうことがあるならば以下の設定を試してみて下さい。
/var/qmail/control 配下に smtproutes というファイルを作り、その中に : に続けてあなたのISPの SMTPサーバのアドレスを書いておきます。 さらに、完全を記すならば defaulthost というファイルを作り、そこにISPのドメイン名を書いておくといいそうですが、私の場合は毎日のリポートメールがISPに行ってしまい宛先不明で戻って来てしまうので、いまのところやっていません。 先の smtproutes だけでもいいようです。
2006年1月2日
私のオフィスは、少人数のため一般のISPにメールサーバとウェブサーバを置いて使用していましたが、出張で日本や他の州に行ってダイアルアップや出先のLANに入れてもらったときなど、メールを取ることはできるが、送ることができなくなって困っていました。 大きなISPほど、SPAMメール対策でセキュリティが厳しく、SMTP認証やPOP Before SMTP にしてもらうのは困難でした。 仕方なく、融通の利く日本の会社の現地法人のISPに変更し、やっと使えるようになったと思ったら、先日、サーバを置いている会社が合併されて、新しいサーバに移す前にサーバが切られてしまい、3日ほどメールが使えなくなってしまいました。 アメリカの会社はやることが大胆で困ってしまいます。 そこで、速度は遅くても、自分たちで管理できるように、オフィスにサーバーを置いて自前でやろうということになり、設定を始めました。
とりあえず、動くものを作ろうということで qmail + checkpasswd で組むことにしてどこからでもアクセスできるようにしようと考えましたが、SPAMメール対策はどうしても必要なので、relay-ctrl を入れることにしました。
qmail
のインストール |
sendmail を削除し、インストール先と、運用に必要なユーザー、グループを作成します。
yum
remove sendmail
mkdir /var/qmail
groupadd nofiles
useradd
-g nofiles -d /var/qmail/alias -s /bin/false alias
useradd -g
nofiles -d /var/qmail -s /bin/false qmaild
useradd -g nofiles -d
/var/qmail -s /bin/false qmaill
useradd -g nofiles -d /var/qmail
-s /bin/false qmailp
groupadd qmail
useradd -g qmail -d
/var/qmail -s /bin/false qmailq
useradd -g qmail -d /var/qmail -s
/bin/false qmailr
useradd -g qmail -d /var/qmail -s /bin/false
qmails
インストールします。
この時点で、/var/qmail/control
の下に五つのファイルが作られます。
要求によって変更を加えて下さい。
以下は私の設定です。
/usr/qmail/control/me
www.hyde-tech.com
/usr/qmail/control/locals
localhost
www.hyde-tech.com
hyde-tech.com
/use/qmail/defaultdomain
hyde-tech.com
www.hyde-tech.com
/usr/qmail/plusdomain
hyde-tech.com
/usr/qmail/rcpthosts
localhost
hyde-tech.com
.hyde-tech.com
www.hyde-tech.com
起動の準備をします。 最初に postmaster、MAILER-DAEMON、root の重要なアカウントにメールを配送する設定をします。
cd
/var/qmail/alias
touch .qmail-postmaster .qmail-mailer-daemon
.qmail-root
chmod 644 .qmail*
これで postmaster、MAILER-DAEMON、root に対するメールは、/var/qmail/alias にセーブされるようになります。
/var/qmail/rc ファイルの中を次のように変更します。
qmail-start ./Mailbox splogger qmail -> qmail-start ./Maildir/ splogger qmail
Maildirの後ろのスラッシュを忘れないでください。
Maildir ディレクトリは自分で作る必要があります。
/var/qmail/bin/maildirmake
~alias/Maildir
chown -R alias /var/qmail/alias/Maildir
ユーザーに関してはそれぞれのアカウントで次のコマンドを実行します。
/var/qmail/bin/maildirmake ~/Maildir
または、root が代わりに作ってもいいですが、chown でそれぞれのユーザーにオーナーを変更する必要があります。したのコマンドを実行して、/etc/skel ディレクトリに Maildir のテンプレートを置いておけば、adduser コマンドであたらしいユーザを作ったときに自動的に作ってくれます。
/var/qmail/bin/maildirmake /etc/skel/Maildir
/var/qmail/alias/.qmail-rootに転送先のアドレスの頭に&を付けて書いておけば、root宛のメールが転送されます。
一般ユーザの場合は ~/.qmail に同様に記述します。
インストールします。
cdb ファイルの元となるファイルを作ります。 ここでは、tcp.smtp と言うファイルで /etc に作ります。
vi /etc/tcp.smtp
192.168.0.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
次のコマンドで、cdb ファイルを作ります。 このコマンドは、一番最後に qmail を起動する前に実行したほうがいいようです。
/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
pop デーモン自身は、qmail をインストールした時点で入っていますが、このデーモンにはユーザー認証の機能が無いので、checkpassword を使って認証機能を実現します。 インストールします。
まず、この Version では envdir というコマンドを使っており、fedora には入っていませんでしたので、調べてみると daemontools に入っていることがわかりました。
インストールします。
次に
relay-ctrl
をインストールしましょう。
http://untroubled.org/relay-ctrl/relay-ctrl-3.1.1.tar.gz
をダウンロードします。
tar
xvzf relay-ctrl-3.1.1.tar.gz
cd relay-ctrl-3.1.1
make
mkdir
/usr/local/man
./installer
これで /usr/local/bin に relay-ctrl のコマンド群がインストールされました。 次に、アクセスしてきた IPアドレスを記録しておく directory を作ります。 これは、どこでもかまいませんがわかりやすいように次のようにしました。
mkdir
/var/qmail/relay-ctrl
mkdir /var/qmail/relay-ctrl/spool
chgrp
-R qmail /var/qmail/relay-ctrl
chmod 700
/var/qmail/relay-ctrl
chmod 777 /var/qmail/relay-ctrl/spool
次に relay-ctrl の環境 directory を作ります。 envdir によって、この中に入っているファイル名と同じ環境変数がそのファイルの内容を持って作られることになります。
mkdir /etc/relay-ctrl
この中に RELAY_CTRL_DIR を作ります。
echo "/var/qmail/relay-ctrl/spool" > /etc/relay-ctrl/RELAY_CTRL_DIR
次に、一定時間後に /var/qmail/relay-ctrl/spool の中の IP アドレスを消す cron を設定します。
crontab -e
としてエディットモードになり
* * * * * /usr/local/bin/envdir /etc/relay-ctrl /usr/local/bin/relay-ctrl-age
を最終行に付け加えます。 次に、qmail を起動するスクリプトを次のようにします。
#!/bin/sh # # qmail: /var/qmail PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin [ -f /var/qmail/rc ] || exit 0 case "$1" in start) # Start daemons. echo "Starting qmail." csh -cf '/var/qmail/rc &' envdir /etc/relay-ctrl relay-ctrl-chdir \ tcpserver -v -u [qmail group ID] -g [nofiles group ID] -x /etc/tcp.smtp.cdb \ 0 smtp relay-ctrl-check \ /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 & envdir /etc/relay-ctrl relay-ctrl-chdir \ tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup \ [server FQID] /bin/checkpassword \ relay-ctrl-allow /var/qmail/bin/qmail-pop3d Maildir 2>&1 \ | /var/qmail/bin/splogger pop3d 3 & echo touch /var/lock/qmail ;; stop) # Stop daemons. echo "Shutting down qmail." PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'` if [ ! -z "$PID" ] ; then /bin/kill ${PID} 1> /dev/null 2>&1 fi echo rm -f /var/lock/qmail ;; restart) $0 stop $0 start ;; *) echo "Usage: S93qmail {start|stop|restart}" exit 1 esac exit 0
さて、いよいよスクリプトを動かして qmail を立ち上げ、テストしてみます。
telenet localhost 110
と入力して
Trying
127.0.0.1...
Connected to localhost.localdomain
(127.0.0.1).
Escape character is '^]'.
+OK
<1498.1013146645@your server FQDN>
と表示されたら、おめでとうございます、pop は無事立ち上がっています。 ここで
user popユーザ名
と入力すると
+OK
が表示されます。 さらに
pass パスワード
と入力して
+OK
と表示されればpopは正常に動いています。
quit
で終了し、/var/qmail/relay-ctrl/spool の中に 127.0.0.1 というファイルができていることを確認しましょう。 あとは、自分のメーラーを使用して送受信が正常にできる事を確認してください。 さらに、受信してから15分後に先のファイルが消えていることも確認してください。
これがうまくいったら、次に localhost ではなく、自分のホスト名でアクセスしてみてください。 この接続に長い時間がかかるようであれば DNS の設定が必要です。 DNS を設定しましょう。
imapを導入しましょう。
courier-imap-3.0.4.tar.bz2 を使用します。 これ以降のバージョンも出ているのですが余計な機能が付いていて設定が面倒なのでこのバージョンにしました。
tar
xvjf courier-imap-3.0.4.tar.bz2
cd courier-imap-3.0.4
./configure
--without-authmysql --without-authldap --prefix=/usr/local
–with-redhat
make
make check
make
install
make install-configure
先のrelay-ctrlを使いたいので、起動スクリプトは次の様になります。
#! /bin/sh # $Id: imapd.rc.in,v 1.26 2004/04/18 15:54:38 mrsam Exp $ # # Copyright 1998 - 2002 Double Precision, Inc. # See COPYING for distribution information. prefix=/usr/local exec_prefix=/usr/local bindir=${exec_prefix}/bin libexecdir=/usr/local/libexec if test ! -f ${prefix}/etc/imapd then echo "${prefix}/etc/imapd does not exist, forgot make install-configure?" exit 1 fi if test ! -f ${prefix}/etc/imapd-ssl then echo "${prefix}/etc/imapd-ssl does not exist, forgot make install-configure?" exit 1 fi TLS_CACHEFILE="" . ${prefix}/etc/imapd-ssl . ${prefix}/etc/imapd case $1 in start) MAXPERIP=20 LIBAUTHMODULES="" for f in `echo $AUTHMODULES` do LIBAUTHMODULES="$LIBAUTHMODULES /usr/local/libexec/authlib/$f" done if test -x ${libexecdir}/authlib/authdaemond then /usr/bin/env - DEBUG_LOGIN="$DEBUG_LOGIN" ${libexecdir}/authlib/authdaemond start fi if test "$TLS_CACHEFILE" != "" then rm -f $TLS_CACHEFILE fi ulimit -v $IMAP_ULIMITD /usr/bin/env - /bin/sh -c " set -a ; prefix=/usr/local ; exec_prefix=/usr/local ; bindir=${exec_prefix}/bin ; libexecdir=/usr/local/libexec ; . ${prefix}/etc/imapd ; \ . ${prefix}/etc/imapd-ssl ; \ IMAP_STARTTLS=$IMAPDSTARTTLS ; export IMAP_STARTTLS ; \ TLS_PROTOCOL=$TLS_STARTTLS_PROTOCOL ; \ /usr/local/bin/envdir /etc/relay-ctrl /usr/local/bin/relay-ctrl-chdir \ /usr/local/libexec/couriertcpd -address=$ADDRESS \ -stderrlogger=${exec_prefix}/sbin/courierlogger \ -stderrloggername=imapd \ -maxprocs=$MAXDAEMONS -maxperip=$MAXPERIP \ -pid=$PIDFILE $TCPDOPTS \ $PORT ${exec_prefix}/sbin/imaplogin $LIBAUTHMODULES \ /usr/local/bin/relay-ctrl-allow \ ${exec_prefix}/bin/imapd ${MAILDIRPATH}" ;; stop) /usr/local/libexec/couriertcpd -pid=$PIDFILE -stop if test -x ${libexecdir}/authlib/authdaemond then ${libexecdir}/authlib/authdaemond stop fi ;; esac exit 0
configureするときに –without-authldapスイッチを忘れたりするといったん削除しても設定が残ってしまうので、起動時にLDAPを見に行ってログインできなくなってしまいますので、そのときには、
cd
/usr/local/libexec/authlib/
mkdir old
mv authdaemond.ldap
old/
mv authdaemond.mysql old/
としてください。
わたしの勤務している会社のネットワークのファイヤーウォールは、まったくもって鉄のカーテンで外部からの接続はVPN以外はまったくだめ、外に出るのはポート80が制限付で空いているだけなので、私のようなコントラクターは自分の会社のメールサーバにもアクセスできないのです。 しかも、内部メールはLookoutだけで転送禁止ときているので使いにくいことこの上ない。 MSNやYahooのメールもアクセスできなくなっています。(でも、日本のサイトはO.Kなのです。 抜けてますね。) ということで、自分のメールサーバにアクセスするためにsquirrelmailを入れました。
yum
-y install squirrelmail
cd
/usr/share/squirrelmail/config
./conf.pl
最初に設定画面を開いたときはカラーがオンになっていて設定されている値が見えないのでcを入力してオフにします。
重要な設定だけを書いておきます。
2. Server Setteing 1. Domain 自分のドメイン名を書いておきます。 私の場合は hyde-tech.com になります。 3. Sendmail of SMTP SMTPに変更します A. Update IMAP Settings 8. Server software courier に変更します 3. Folder Defaults 1. Default Folder Prefix Maildir/ に変更 3. Trash Folder INBOX.Trash に変更 4. Sent Folder INBOX.Sent に変更 5. Drafts Folder INBOX.Drafts に変更 10. Languages 1. Default Language ja_JP に変更
セーブして終了します。
ln -s /usr/share/squirrelmail /var/www/html/webmail
これで、URLの後ろに /webmail と付ければ squirrelmail のログイン画面が出てきます。
現在のバージョンは squirrelmail-1.4.8-1.fc5 で windows 上のブラウザで日本語名の添付ファイルを保存するときにファイル名が化けるというバグがあります。 1.4.8-2 では直っているのですがfc5はまだ出てません。 fc6用のソースrpmを取ってきて入れればOKですが、面倒であればパッチ済みの mime.php がありますので、欲しい方はメールを下さい。 以下にソースRPMからのインストールの方法を書いておきます。
mv
squirrelmail-1.4.8-2.fc6.src.rpm /usr/src/redhat/SRPMS/
cd
/usr/src/redhat
rpm -ivh
SRPMS/squirrelmail-1.4.8-2.fc6.src.rpm
rpmbuild -ba
SPECS/squirrelmail.spec
rpm -Uvh
RPMS/noarch/squirrelmail-1.4.8-2.noarch.rpm
以上で完了です。
更新日: