qmail-toasterでメール

サーバー運用がかなり厳しいので寄付をしてくれる人がいたらこちら
メインPCもボロボロになってきたので、ついにほしいものリスト公開

ということで、本家が更新しなくなったので、netqmail-1.06で使えるようにtoasterパッチいじってうち専用のものに変えてみましたよ

qmail-toasterといういろんなパッチのあたったコピペだけで
すぐに使えるメールサーバの設定サイトがあるのですが、
そこの一部を若干変更してうちでは利用します。

HP: http://shupp.org/toaster/

本家がおわたらしくgithubから勝手にフォークしろとのこと?なので、後ほどうちでミラー?しておきます?

ソース類の取得

unalias rm mv cp
 
rpm -e --nodeps sendmail postfix
 
umask 0022
mkdir -p /var/src/tar
cd /var/src/tar
 
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget http://qmail.org/netqmail-1.06.tar.gz
wget http://sourceforge.net/projects/domainkeys/files/libdomainkeys/0.69/libdomainkeys-0.69.tar.gz
wget http://ftp.momo-i.org/pub/toaster/libdomainkeys-0.69.diff
wget http://ftp.momo-i.org/pub/toaster/qmail-toaster-0.9.2.patch.bz2
wget http://sourceforge.net/projects/vpopmail/files/vpopmail-devel/5.4.33/vpopmail-5.4.33.tar.gz
wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz
wget http://sourceforge.net/projects/qmailadmin/files/qmailadmin-devel/qmailadmin-1.2.16.tar.gz
wget http://sourceforge.net/projects/qmailadmin/files/qmailadmin-help/1.0.8/qmailadmin-help-1.0.8.tar.gz
wget http://cr.yp.to/software/ezmlm-0.53.tar.gz
wget http://ftp.momo-i.org/pub/toaster/ezmlm-idx-0.443.tar.gz
wget http://ftp.momo-i.org/pub/toaster/courier-authlib-0.59.1.tar.bz2
wget http://ftp.momo-i.org/pub/toaster/courier-imap-4.1.2.tar.bz2
wget http://ftp.momo-i.org/pub/toaster/daemontools-0.76.errno.patch
wget http://ftp.momo-i.org/pub/toaster/ucspi-tcp-0.88.errno.patch
wget http://ftp.momo-i.org/pub/toaster/toaster-scripts-0.9.0.tar.gz

DaemonToolsのインストール

mkdir -p /package
chmod 1755 /package
cd /package
tar -xpzf /var/src/tar/daemontools-0.76.tar.gz
cd admin/daemontools-0.76
patch -p1 < /var/src/tar/daemontools-0.76.errno.patch
package/install
 
cd ../
mkdir clear
touch clear/down
 
cat > clear/run <<EOF
#!/bin/sh
yes '' | head -4000 | tr '\n' .
 
# When you want to clear the service errors, just run this:
# svc -o /service/clear
EOF
 
chmod +x clear/run
chmod a-w clear/down
 
ln -s /package/admin/clear /service/clear
 
# Fedora14以下?(upstart)
/etc/init/svscanboot.conf
---
# svscanboot
 
start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
 
stop on shutdown
 
respawn
exec /command/svscanboot
---
initctl start svscanboot
 
# Fedora15以上?(systemd)
/etc/systemd/system/svscanboot.service
---
[Unit]
Description=Qmail Daemon
 
[Service]
ExecStart=/command/svscanboot
 
[Install]
WantedBy=multi-user.target
---
systemctl start svscanboot.service
systemctl enable svscanboot.service

ucspi-tcpのインストール

x86_64の人はconf-ccファイルの-O2を消して下さい。

cd /var/src/
tar -xzf tar/ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch -p1 < /var/src/tar/ucspi-tcp-0.88.errno.patch
 
make
make setup check

Qmailのインストール

mkdir /var/qmail
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails
 
cd /var/src
tar -xzf tar/toaster-scripts-0.9.0.tar.gz
tar -xzf tar/netqmail-1.06.tar.gz
cd netqmail-1.06
ln -s /usr/kerberos/include/com_err.h \
/usr/kerberos/include/krb5.h \
/usr/kerberos/include/profile.h \
/usr/include/
 
rm /usr/sbin/sendmail
 
make
make setup check
 
echo 3 > /var/qmail/control/spfbehavior
 
(cd ~alias; echo " webmaster@example.com " > .qmail-postmaster ;\
echo " webmaster@example.com " > .qmail-mailer-daemon ;\
echo " webmaster@example.com " > .qmail-root )
chmod 644 ~alias/.qmail*
 
./config-fast `hostname --long`
 
cd /var/src
cp toaster-scripts-0.9.0/rc /var/qmail/rc
chmod 755 /var/qmail/rc
mkdir /var/log/qmail
echo ./Maildir/ >/var/qmail/control/defaultdelivery
cp toaster-scripts-0.9.0/qmailctl /var/qmail/bin/
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/qmail/supervise/qmail-pop3d/log
mkdir -p /var/qmail/supervise/qmail-pop3ds/log
cp /var/src/toaster-scripts-0.9.0/send.run /var/qmail/supervise/qmail-send/run
cp /var/src/toaster-scripts-0.9.0/send.log.run /var/qmail/supervise/qmail-send/log/run
cp /var/src/toaster-scripts-0.9.0/smtpd.run /var/qmail/supervise/qmail-smtpd/run
cp /var/src/toaster-scripts-0.9.0/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run
cp /var/src/toaster-scripts-0.9.0/pop3d.run /var/qmail/supervise/qmail-pop3d/run
cp /var/src/toaster-scripts-0.9.0/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run
 
cp /var/src/toaster-scripts-0.9.0/stunnel.conf /var/qmail/supervise/qmail-pop3ds/
cp /var/src/toaster-scripts-0.9.0/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run
 
cp /var/src/toaster-scripts-0.9.0/pop3ds.log.run /var/qmail/supervise/qmail-pop3ds/log/run
echo 20 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming
chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
chmod 755 /var/qmail/supervise/qmail-pop3ds/run
chmod 755 /var/qmail/supervise/qmail-pop3ds/log/run
mkdir -p /var/log/qmail/smtpd
mkdir -p /var/log/qmail/pop3d
mkdir -p /var/log/qmail/pop3ds
chown -R qmaill /var/log/qmail
ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
sleep 5
qmailctl stat
 
vi /etc/man_db.conf
---
MANDATORY_MANPATH                       /var/qmail/man
MANPATH_MAP     /var/qmail/bin  /var/qmail/man
---

もしStunnelのバージョン4を使ってたら下のpop3ds.runの
記述をpop3ds.run.v4に置き換えて下さい。
以下のコマンドで確認可能です。

stunnel -version #V4の場合
stunnel -V #V3の場合

V4だった場合は以下をコピーします。

cp /var/src/toaster-scripts-0.9.0/stunnel.conf /var/qmail/supervise/qmail-pop3ds/
cp /var/src/toaster-scripts-0.9.0/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run

後でDomain-Keyで遊んでみるので以下をコンパイルします。

cd /var/src
tar -xzf tar/libdomainkeys-0.69.tar.gz
cd libdomainkeys-0.69
patch -p0 < ../tar/libdomainkeys-0.69.diff
make

Vpopmailのインストール

groupadd -g 89 vchkpw
useradd -u 89 -g vchkpw vpopmail
 
cd /var/src
tar -xzf tar/vpopmail-5.4.33.tar.gz
cd vpopmail-5.4.33
 
#x86_64
CFLAGS=-fPIC ./configure --enable-logging=v
#ix86
./configure --enable-logging=v
make
make install-strip
echo '127.:allow,RELAYCLIENT=""' > ~vpopmail/etc/tcp.smtp
(cd ~vpopmail/etc ; tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp)
 
cp ../toaster-scripts-0.9.0/vpopmailctl /var/qmail/bin/vpopmailctl
ln -s /var/qmail/bin/vpopmailctl /usr/bin
cd /var/src/netqmail-1.06
bunzip2 -c ../tar/qmail-toaster-0.9.2.patch.bz2 | patch -p1
make clean
make
qmailctl stop
make setup check
chown -R vpopmail:vchkpw /var/qmail/spam
 
make cert
 
make tmprsadh

そしてCronに以下を追加

01 01 * * * /var/qmail/bin/update_tmprsadh > /dev/null 2>&1
qmailctl start
ln -s /var/qmail/supervise/qmail-pop3d /var/qmail/supervise/qmail-pop3ds /service
sleep 5
vpopmailctl stat

Courier-authlibのインストール

0.60.3以降でauthvchkpwが無くなったので、古いままやります

cd /var/src
tar -xjf tar/courier-authlib-0.59.1.tar.bz2
cd courier-authlib-0.59.1
./configure --with-redhat
make
make install-strip
make install-configure
 
cp courier-authlib.sysvinit /etc/init.d/courier-authlib
chmod 755 /etc/init.d/courier-authlib
ln -s ../init.d/courier-authlib /etc/rc0.d/K30courier-authlib
ln -s ../init.d/courier-authlib /etc/rc1.d/K30courier-authlib
ln -s ../init.d/courier-authlib /etc/rc2.d/S80courier-authlib
ln -s ../init.d/courier-authlib /etc/rc3.d/S80courier-authlib
ln -s ../init.d/courier-authlib /etc/rc4.d/S80courier-authlib
ln -s ../init.d/courier-authlib /etc/rc5.d/S80courier-authlib
ln -s ../init.d/courier-authlib /etc/rc6.d/K30courier-authlib

/usr/local/etc/authlib/authdaemonrc

authmodulelist="..."とあるのを
authmodulelist="authvchkpw"に変更します。

/etc/init.d/courier-authlib start

Courier-imapのインストール

こっちも同様に最新版だとauthlibの0.6xが必要なので古いので。。。

cd /var/src
tar -xjf tar/courier-imap-4.1.2.tar.bz2
cd courier-imap-4.1.2
 
chown -R vpopmail:vchkpw ../courier-imap-4.1.2
su vpopmail
umask 0022
./configure --with-redhat
gmake
exit
gmake install-strip
gmake install-configure
 
cp courier-imap.sysvinit /etc/init.d/courier-imap
chmod 755 /etc/init.d/courier-imap
ln -s ../init.d/courier-imap /etc/rc0.d/K30courier-imap
ln -s ../init.d/courier-imap /etc/rc1.d/K30courier-imap
ln -s ../init.d/courier-imap /etc/rc2.d/S80courier-imap
ln -s ../init.d/courier-imap /etc/rc3.d/S80courier-imap
ln -s ../init.d/courier-imap /etc/rc4.d/S80courier-imap
ln -s ../init.d/courier-imap /etc/rc5.d/S80courier-imap
ln -s ../init.d/courier-imap /etc/rc6.d/K30courier-imap

/usr/lib/courier-imap/etc/imapd

IMAPDSTART=NOの部分を
IMAPDSTART=YESに変更
AUTH=CRAM-MD5をIMAP_CAPABILITYに追加して
CRAM-MD5を使えるようにします。

/usr/lib/courier-imap/etc/imapd-ssl

IMAPDSSLSTART=NOの部分を
IMAPDSSLSTART=YESに変更

/etc/init.d/courier-imap start

これでとりあえずメール鯖としての動作はするはずです。
以下のコマンドで接続可能か確認をして見ます。

telnet localhost 25
telnet localhost 110
telnet localhost 143

接続が確認できたら、まずはドメインの追加をしましょう。

cd /home/vpopmail/bin
./vadddomain momo-i.org
Please enter password for postmaster: xxxxx(不可視)
enter password again: xxxxx(不可視)

次にユーザの追加をします。

./vadduser webmaster@momo-i.org
Please enter password for webmaster@momo-i.org:
enter password again: xxxxx(不可視)

もちろん、MXレコード(Aレコード)さえ登録してあれば、
サブドメインいくつでも作ることができます。

メールアドレスを作成すると以下のディレクトリが作成され、
そこに飛んできたメールが格納されます。

/home/vpopmail/domains/momo-i.org/webmaster

そしたらメールクライアントの設定をしましょう。
メールサーバ(SMTP・POP)のアドレスにはサーバのIPアドレスを入れます。
SSL対応クライアントの場合はPOPはポート番号993を、SMTPは25を指定します。
SMTPはSTARTTLSを使うようにしないとエラーになります。

メールクライアントでSTARTTLSが使えないとか、設定が面倒って人は
tcpserverをSSL化して、違うポートで立ち上げると良いです。

cd /var/src/ucspi-tcp-0.88
wget http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz
gzip -dc ucspi-tcp-ssl-20050405.patch.gz | patch
make
cp tcpserver /usr/local/bin/tcpserver-ssl

次にqmail-smtpdsを作成します。

cd /var/qmail/supervise
cp -r qmail-smtpd qmail-smtpds
cd qmail-smtpds
vi run
---
/usr/local/bin/tcpserver -v -H -R -l 0 \
↓
/usr/local/bin/tcpserver-ssl -s -v -H -R -l 0 \
 
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
↓
-u "$QMAILDUID" -g "$NOFILESGID" -n /var/qmail/control/servercert.pem 0 smtps \
---
 
vi log/run
---
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd
↓
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpds
---
 
mkdir /var/log/qmail/smtpds
chown qmaill /var/log/qmail/smtpds
ln -s /var/qmail/supervise/ /service/
 
vi /var/qmail/bin/qmailctl
---
svclist="qmail-send qmail-smtpd"svclist="qmail-send qmail-smtpd qmail-smtpds"
---
 
qmailctl stat
~~~~~
/service/qmail-smtpds: up (pid 20471) 59757 seconds
/service/qmail-smtpds/log: up (pid 3162) 914677 seconds

以上で完了です。

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
また変更しました
Fill in the blank.