Home > サーバー構築関連 > qmailを使ったメールサーバーの構築

qmailを使ったメールサーバーの構築

Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録 このエントリーを含むはてなブックマーク

qmail(smtpauth対応) + vpopmail + ezml + autorespond な環境でメールサーバーを構築します。


事前作業

デフォルトで組み込まれているメールプログラムを削除します。

/etc/init.d/exim4 stop
update-rc.d -f exim4 remove
apt-get remove exim4


qmail用のディレクトリを作成

mkdir /var/qmail


qmail は複数のプログラムが動作してメールサーバーを構成しています。
これらのプログラムを実行するユーザーとグループを作成する必要がありますので、
インストールに必要なグループ・ユーザー作成します

groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias -s /sbin/nologin
useradd -g nofiles -d /var/qmail qmaild -s /sbin/nologin
useradd -g nofiles -d /var/qmail qmaill -s /sbin/nologin
useradd -g nofiles -d /var/qmail qmailp -s /sbin/nologin
groupadd qmail
useradd -g qmail -d /var/qmail qmailq -s /sbin/nologin
useradd -g qmail -d /var/qmail qmailr -s /sbin/nologin
useradd -g qmail -d /var/qmail qmails -s /sbin/nologin




qmail(smtpauth対応)インストール

qmailのソースと各種パッチをダウンロードしてきます。
基本的にソースは/usr/local/srcへ保存しています

cd /usr/lcoal/src/
wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz
wget ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-date-localtime.patch
wget http://www.qmail.org/qmail-smtpd-relay-reject
wget http://www.ckdhr.com/ckd/qmail-103.patch


ソースを展開します。

cd usr/lcoal/src/
tar xvfz qmail-1.03.tar.gz
tar xvfz qmail-smtpd-auth-0.31.tar.gz


展開したqmailのフォルダへ移動し各種パッチをあてます。

cd qmail-1.03
patch < ../qmail-date-localtime.patch
patch  < ../qmail-smtpd-relay-reject
patch < ../qmail-103.patch


上から
日本標準時間対応パッチ
不正中継拒否対応パッチ施行
DNSに関するUDPパケットが512バイトを超えると処理できなくなる問題の修正パッチ
をあてています。

cp ../qmail-smtpd-auth-0.31/*.* ./
patch < auth.patch


SMTP-Auth対応パッチをあてます。

これでmake、、、としたいところですが、この状態でmakeすると
make: *** [auto-str] error 1
というエラーが1件出て正常にmakeできません。
これをなくす為に

vi error.h


で、以下のように変更

extern int errno;
↓変更
#include<errno.h>


この後、makeする。
./config-fastの後には利用するメールのドメイン名を入力します。
ホストネームどおりなら ./config-fast `hostname` でもいいと思います。
ここで設定した内容は/var/qmail/control/内の設定ファイル内へ記述されています

make
make setup
make check
./config-fast hogehoge.com



ルートのメールアドレスを設定します。
水色の部分を任意のメールアドレスへ変更して下さい。

cd /var/qmail/alias
touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
chmod 644 .qmail*
echo "root@hogehoge.com" > .qmail-root
echo "root@hogehoge.com" > .qmail-mailer-daemon
echo "root@hogehoge.com" > .qmail-root



起動スクリプト(rcファイル)を作成します。
qmailではデフォルトではmbox形式のメールボックスを使用するようになっている為、
maildir形式で使用するよう記述します。

vi /var/qmail/rc


以下のように記述

#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" qmail-start ./Maildir/ splogger qmail




tcpserverのインストール

メールリレー(POPなど)を行えるようにする為にtcpserverをインストールします。
tcpserverはTCP接続要求を受け付け、メールサーバへ渡す機能を持っています。
途中パッチをあてていますがパッチをあてないと: undefined reference to `errno’といったエラーがでます。

cd /usr/local/src
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget http://www.stackasterisk.jp/tech/systemConstruction/qmail01/ucspi-tcp-glibc.patch
tar zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch < ../ucspi-tcp-glibc.patch
make
make setup check




daemontoolsのインストール

multilog取得のためdaemontoolsをインストールします

cd /usr/local/src
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar zxvf daemontools-0.76.tar.gz
cd admin/daemontools-0.76/


このままではまたしてもerrnoのエラーが出るので以下を編集します

vi src/error.h


以下のように変更

extern int errno;
↓以下のように変更
#include<errno.h>


インストール

package/install
mkdir /var/log/qmail
chown qmaill:nofiles /var/log/qmail
chmod 755 /var/log/qmail




vpopmailのインストール

vpopmailは qmailに対応した /etc/passwd を使わない
バーチャルドメインメール、POPアカウントの自動生成、保守プログラムです。

※vpopmail-5.4.28では通常どうり動作するのですがsyslogへ
vdelivermail[xxxxx]: segfault at 10 ip xxxxxxxxx sp xxxxxxx error 4 in vdelivermail
といったエラーが頻発した為、vpopmail-5.4.25を使用します
こちらの方と同じ状況の模様です→[vpopmail]セグメンテーション違反

vpopmail-5.4.25はもうダウンロードできないので
こちらへアップロードしておきました → vpopmail-5.4.25

あらかじめ vchkpw というグループと vpopmail というユーザーを登録して、
/home/vpopmail を作成しておきます。

groupadd  vchkpw
useradd -g vchkpw vpopmail
mkdir /home/vpopmail
mkdir /home/vpopmail/etc
chown -R vpopmail.vchkpw /home/vpopmail



SMTPリレーの制限設定

cd /home/vpopmail/etc
touch tcp.smtp
chmod 600 tcp.smtp
echo "127.0.0.1:allow,RELAYCLIENT=\"\"" >> tcp.smtp
echo ":allow" >> tcp.smtp
tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp



vpopmail-5.4.25のインストール

cd /usr/local/src
tar zxvf http://www.ahref.org/tech/image/vpopmail-5.4.25.tar.gz
cd vpopmail-5.4.25



CRAM-MD5認証時エラーへの対処

vi vchkpw.c


以下のように編集します(2か所)

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とmake 、makeインストール

./configure --enable-qmail-ext=n --enable-logging=y \
--enable-tcpserver-path=/home/vpopmail/etc/tcp.smtp \
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
--enable-log-name=vpopmail
 
make
make install-strip



qmailadminのインストール

①autorespondインストール & 日本語化
qmail の自動応答機能ツールである autorespond をインストールします。

cd /usr/local/src
wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz
cd autorespond-2.0.5


デフォルトの状態では自動返信機能の日本語がうまく利用できないため。
autorespond.c編集

vi autorespond.c


以下のように編集

static char *binqqargs[2] = { "bin/qmail-queue", 0 };
            ↓修正
static char *binqqargs[2] = { "bin/qmail-queue.iso-2022-jp", 0 };
 
        fprintf(fdm,"Date: %u %s %u %02u:%02u:%02u -0000\nMessage-ID: <%lu.%u.blah>\n"
                ,dt->tm_mday,montab[dt->tm_mon],dt->tm_year+1900,dt->tm_hour,dt->tm_min,dt->tm_sec,msgwhen,getpid() );
 
        fprintf(fdm,"Content-Type: text/plain; charset=\"ISO-2022-JP\"\n" ); ← 追加
 
        mfp = fopen( msg, "rb" );


以上の修正が完了したらインストールします。

make && make install


qmail-queue.iso-2022-jpファイルを作成

vi /var/qmail/bin/qmail-queue.iso-2022-jp


以下のように編集

#!/bin/bash
 
NKF="/usr/bin/nkf"
PERL="/usr/bin/perl"
QMAILQUEUE="/var/qmail/bin/qmail-queue"
 
${PERL} -pe 's/\n/\\n/g' |\
${PERL} -pe 's/From:.*?\\n\\n//' |\
${PERL} -pe 's/-------- Original Message --------.*$//' |\
${PERL} -pe 's/\\n/\n/g' |\
${NKF} -j |\
${QMAILQUEUE}



パーミッションの変更など

chmod 711 /var/qmail/bin/qmail-queue.iso-2022-jp
chown vpopmail.qmail /var/qmail/bin/qmail-queue.iso-2022-jp



②ezmlmによるメーリングリストの構築

cd /usr/local/src
wget http://cr.yp.to/software/ezmlm-0.53.tar.gz
tar zxvf ezmlm-0.53.tar.gz
wget http://www.ezmlm.org/archive/5.1.2/ezmlm-idx-5.1.2.tar.gz
tar zxvf ezmlm-idx-5.1.2.tar.gz



mv -f ezmlm-idx-5.1.2/* ezmlm-0.53/


パッチをあてます

cd ezmlm-0.53
patch < idx.patch


インストール

echo ja > conf-lang
echo c:::644:/ja/:charset:lang/ja/charset >> ETC
make && make setup



qmailadminインストール

ウェブインターフェース上からユーザの追加や削除などが行えるようになります。
qmailadminへのアクセスはhttp://ホスト名/cgi-bin/qmailadminにてアクセスできます。

cd /usr/local/src
wget http://jaist.dl.sourceforge.net/sourceforge/qmailadmin/qmailadmin-1.2.11.tar.gz
tar zxvf qmailadmin-1.2.11.tar.gz
cd qmailadmin-1.2.11


インストール

./configure --enable-htmldir=/usr/local/apache2/htdocs/qmailadmin \
--enable-imagedir=/usr/local/apache2/htdocs/qmailadmin/images \
--enable-imageurl=/qmailadmin/images \
--enable-cgibindir=/usr/local/apache2/cgi-bin \
--enable-ezmlm-mysql=n


パス等は任意で変更して下さい↑

make && make install-strip


以上でインストールは完了です。

確認

・メールのテスト
mail xxxx@hogehoge.com
cc:
title:test
testmail
(CTRL+D)
でメールが送信できるかチェック

・vpopmail+qmailadminのテスト
実際に使用するドメインでメールアドレスを作ってみる
/home/vpopmail/bin/vadddomain hogehoge.com
で /home/vpopmail/domains/
へhogehoge.comが追加されているか。

http://ホスト名/cgi-bin/qmailadmin へ接続し上記で作成したアカウントでログインできるか。

ユーザー:postmaster
ドメイン:hogehoge.com
パスワード:******




コメント:0

コメントフォーム
情報を保存

トラックバック:0

この記事のトラックバックURL
http://www.ahref.org/tech/server/server-default/525.html/trackback
この記事へのリンク
エーエイチレフ linuxサーバー技術情報 からの記事 qmailを使ったメールサーバーの構築

Home > サーバー構築関連 > qmailを使ったメールサーバーの構築

Return to page top

運営会社(株)シーズ WEBアプリケーション、フリーCGI配布「ahref(エーエイチレフ)」 Eビジネスに強いレンタルサーバー「ACサーバー」 大容量ファイル転送サービス「デカメール」 動画を楽しもう♪動画ポータルコミュニティ「モヴィエ」