We are ACORN!

プログラムやサーバーの設定など、技術的な記事を載せております。

CentOS qmail Server

qmail(with smtp auth) + vpopmail + ezmlm-idx + dovecot + qmailadminなサーバ構築

投稿日:2018-12-21 更新日:

概要

「今時qmailかよ」っていう人もいるかもしれませんが、長年qmailサーバを組んで来て不都合を感じたことがないので、このまま定年までこれで行けるんじゃないかと思っています(笑)
それで、CentOS 6 64bitに対応したqmailのインストール方法を書いておこうと思います。

メールサーバに必要なファイル

qmail
qmail-smtpd-auth-0.31
tcpserver
vpopmail
autorespond-2.0.5
ezmlm-0.53-idx-0.41(idx込みのezmlm)
qmailadmin
あと、パッチ多数。それぞれのステップでダウンロード先を載せます。

qmailのインストール

■ディレクトリを作る

mkdir /var/qmail

■グループの作成

groupadd nofiles
groupadd qmail

■ユーザーの作成

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
useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
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

■展開する

tar xvzf qmail-1.03.tar.gz

■パッチを当てる
qmail-0.0.0.0.patch
qmail-1.03.errno.patch
qmail-1.03.qmail_local.patch
qmail-103.patch
qmail-date-localtime.patch
qmail-smtpd-relay-reject
qmail-smtpd-auth-0.31.tar.gz(README.authを参照)

パッチ済みのtarボール

■コンパイル

make
make setup check

■設定

./config-fast example.jp

■sendmailの除去

mv /usr/lib/sendmail /usr/lib/sendmail.bak
mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
chmod 000 /usr/lib/sendmail.bak
chmod 000 /usr/sbin/sendmail.bak
ln -s /var/qmail/bin/sendmail /usr/lib/
ln -s /var/qmail/bin/sendmail /usr/sbin/

■起動スクリプトの修正

mv /var/qmail/boot/home /var/qmail/rc

以下に修正

qmail-start ./Mailbox splogger qmail
↓↓↓
qmail-start ./Maildir/ splogger qmail

■起動スクリプトの作成

#!/bin/sh
#
# chkconfig: 2345 90 10
# description: qmail smtp service
#

PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin:/home/vpopmail/bin

[ -f /var/qmail/rc ] || exit 0

case "$1" in
  start)
    echo 'Starting qmail: '
    csh -cf '/var/qmail/rc &' >/dev/null 2>&1

    # SMTP
    tcpserver -HR -l0 -v -x /etc/tcp.smtp.cdb \
      -u `id -u vpopmail` -g `id -g vpopmail` 0 smtp \
      qmail-smtpd `hostname` vchkpw /bin/true 2>&1 | splogger smtpd 3 &
    # SMTPSも必要なら以下をコメントを外す
    # tcpserver -HR -l0 -sv -x /etc/tcp.smtp.cdb -n /var/qmail/cert.pem \
    #    -u `id -u vpopmail` -g `id -g vpopmail` 0 smtps \
    #    qmail-smtpd `hostname` vchkpw /bin/true 2>&1 | splogger smtps 3 &

    echo
    touch /var/lock/qmail

    ;;
  stop)
    echo "Stoping qmail: "
    PID=`/bin/ps -aefw | grep [q]mail | awk '{print $2}'`
    if [ ! -z "$PID" ] ;  then
      /bin/kill ${PID} 1> /dev/null 2>&1
    fi
    echo
    rm -f /var/lock/qmail
    ;;
  *)
    echo "Usage: S99qmail {start|stop}"
    exit 1
esac

exit 0

■起動スクリプトの設定

chmod 755 /etc/init.d/qmail
chkconfig --add qmail
chkconfig qmail on

tcpserverのインストール

■パッチを当てる
ucspi-tcp-0.88.a_record.patch
ucspi-tcp-0.88.errno.patch
ucspi-tcp-0.88.nobase.patch

パッチ済みのtarボール

SMTP over SSLをする場合、以下も当てる。
ucspi-tcp-ssl-20050405.patch.gz
pemキーの作り方はどこかを参照してください。

■インストール

make setup check

■cdbの作成

cd /etc
echo '127.:allow,RELAYCLIENT=""' > tcp.smtp
tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp

vpopmailのインストール

■ユーザーの作成

groupadd -g 89 vchkpw
useradd -g vchkpw -u 89 vpopmail

■CRAM-MD5認証時にエラーになるので修正する

vi vchkpw.c
hmac_md5( (unsigned char *) challenge, strlen(challenge), (unsigned char *) password, strlen(password), digest);
↓※変更
hmac_md5( (unsigned char *) response, strlen(response), (unsigned char *) password, strlen(password), digest);
 
return(strcmp(digascii,response));
↓※変更
return(strcmp(digascii,challenge));

■オプションを付けてconfigure

./configure \
--enable-qmaildir=/var/qmail \
--enable-vpopuser=vpopmail \
--enable-vpopgroup=vchkpw \
--enable-roaming-users \
--disable-rebuild-tcpserver-file \
--disable-clear-passwd

■インストール

make
make install-strip

■とりあえずドメインを作る
後ほどqmailadminを入れるので、そのときメールアドレスは設定できる。

/home/vpopmail/bin/vadddomain example.jp

dovecotのインストール

CentOS 6 (64bit版) RPMのリビルド&設定(さくらのVPSでの実施例)
CentOS 6.Xのdovecotはvpopmailのサポートが外されているので、それを付けたrpmを作ります。

■ソースRPMを取得
2015/06/21時点ではdovecot-2.0.9-8.el6_6.4.src.rpmが最新。

■インストールする

rpm -ivh dovecot-2.0.9-8.el6_6.4.src.rpm

/root/rpmbuildに展開される

■specファイルを編集する

vi /root/rpmbuild/SPECS/dovecot.spec

--with-docを探しその前の行に挿入

--with-vpopmail \

■ビルドする

rpmbuild -bb --clean /root/rpmbuild/SPECS/dovecot.spec

依存関係がないぞ、と言われたら、該当パッケージをインストールする

もう一度

rpmbuild -bb --clean /root/rpmbuild/SPECS/dovecot.spec

をするとビルドできる。
ビルドしたrpm

■ビルドしたrpmをインストールする

rpm -ivh /root/rpmbuild/RPMS/x86_64/dovecot-2.0.9-8.el6.4.x86_64.rpm

■設定
/etc/dovecot/conf.d/auth-vpopmail.conf.ext を編集し、以下をコメントアウト

args = quota_template=quota_rule=*:backend=%q

/etc/dovecot/conf.d/10-auth.conf を編集する

コメントアウト
!include auth-system.conf.ext

コメントを外す
#!include auth-vpopmail.conf.ext

/etc/dovecot/conf.d/10-mail.conf を編集

30行目くらい
mail_location = maildir:~/Maildir

167行目くらい
first_valid_uid = 89

autorespond-2.0.5のインストール

■autorespondの日本語化
パッチ当て:autorespond-2.0.5.iso-2022-jp.patch

■インストール

make
make install

nkfをインストールしておくこと
qmail-queue.iso-2022-jpを/var/qmail/binにコピー。
その後所有者を、vpopmail.vchkpwに変更&chmod 711

ezmlm-0.53-idx-0.41のインストール

■展開する

tar xvzf ezmlm-0.53-idx-0.41.tar.gz

■conf-langの先頭行を「ja」に変える
■インストール

make
make man
make setup

qmailadminのインストール

■configureする

./configure \
--enable-vpopmaildir=/home/vpopmail \
--enable-htmldir=/var/www/html \
--enable-cgibindir=/var/www/cgi-bin/admin \
--enable-cgipath=/cgi-bin/admin/qmailadmin \
--enable-qmaildir=/var/qmail \
--enable-ezmlmdir=/usr/local/bin/ezmlm \
--enable-autoresponder-path=/usr/bin \
--enable-vpopuser=vpopmail \
--enable-vpopgroup=vchkpw \
--disable-ezmlm-mysql \
--enable-help

■インストールする

make clean; make; make install-strip

注意 ※/cgi-bin/adminにqmailadminを作る場合。
この場合、httpd.confでこのディレクトリにアクセス制御をかけたほうが良いと思う。

おまけ

■qtools 0.56のインストール
spamassassinを利用しているんですが、その際.qmailでspamcを経由してスパムに印をつけてMaildirに格納しています。
Maildirに格納するのに、tomaildirというqtoolsの中のプログラムを利用します。

CentOS 6 64bitになったらコンパイルできなくなったので調査した結果、パッチを当てる必要があるようです。
後々を考えて、パッチなども載せておきます。
qtools 0.56

パッチたち
qtools-0.56-errno.patch
qtools-0.56-head.patch

■展開し、パッチを当てる。

tar xzvf qtools-0.56.tar.gz

cd qtools-0.56
patch < ../qtools-0.56-errno.patch
patch < ../qtools-0.56-head.patch

■ビルドしインストール

make
make install

■使い方
.qmail にて以下の様にすると、spamcからの出力を保存できる

|spamc|tomaildir ./Maildir

-CentOS, qmail, Server


comment

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

【qmail】携帯キャリアのメールに添付を削除して転送する

qmailでメールを携帯に転送して、メール通知に使っておられる方は結構多いんじゃないでしょうか。 ただ、大きなファイルが添付されていると、エラーメールが送信元に戻ってしまいます。 つまり、クライアント …

PHPからsyslogを書く

忘備録です。 PHPでシステム回りを作っているんですが、syslogに出力出来たらなー、と思っていました。 調べたら簡単♪ function logger($mes) { exec("/bi …

【qmail】 SPFの不正を防御する

スパムでSPFがpassになるのが多いなあ?、と思ってググりました。 ありました(泣) SPF (Sender Policy Framework) チェックをパスしてしまう迷惑 (スパム) メールが増 …

Xserverにmuttを追加する

XserverにはmuttというCUIのメーラーは入っていません。 CUIでメールが確認できると、SSHでログインしてメールを確認できるので便利です。 早速インストールしてみましょう。 準備 まず、ユ …

【qmail】 SPFヘッダーを追加する

迷惑メール対策としてSPFという仕組みが導入されています。 このSPFとはなんでしょうか? 財団法人インターネット協会の迷惑メール対策委員会のページによると、 送信側は、あらかじめ自ドメインの権威DN …