メールサーバーの構築

ホームへ戻る

更新日:07/12/27

qmail+dovecotメールサーバーをどのようにして、構築したかを記していきます。
qmailでsmtp,smtps,pop3,pop3sを担当し、dovecotでimap,imapsを担当させる。	 
@、日本標準時間対応パッチを当てはめる。
A、SMTP-Auth対応パッチを当てはめる。
B、不正中継拒否対応パッチダウンロード

 
参考にしたサイト:CentOSで自宅サーバー構築それゆけLinux
 
   
qmailのインストール <<TOP

1,qmailに必要なユーザとグループを作成する。

[root@server ~]# mkdir /var/qmail ← qmailインストールディレクトリ作成
[root@server ~]# groupadd nofiles ← nofilesグループ作成
[root@server ~]# useradd -g nofiles -s /sbin/nologin alias -m -d /var/qmail/alias -k /dev/null ← aliasユーザ作成
[root@server ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaild ← qmaildユーザ作成
[root@server ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaill ← qmaillユーザ作成
[root@server ~]# useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmailp ← qmailpユーザ作成
[root@server ~]# groupadd qmail ← qmailグループ作成
[root@server ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailq ← qmailqユーザ作成
[root@server ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailr ← qmailrユーザ作成
[root@server ~]# useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmails ← qmailsユーザ作成

2,qmailインストール

最新版はダウンロードサイトで確認してください。
[root@server ~]# wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz ← qmailダウンロード
	
--16:08:30--  ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
           => `qmail-1.03.tar.gz'
ftp.jp.qmail.org をDNSに問いあわせています... 202.41.218.243
ftp.jp.qmail.org|202.41.218.243|:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。    ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。  ==> CWD /qmail ... 完了しました。
==> PASV ... 完了しました。    ==> RETR qmail-1.03.tar.gz ... 完了しました。

    [  <=>                                               ] 220,668      631.37K/s             

16:08:31 (630.84 KB/s) - `qmail-1.03.tar.gz' を保存しました [220668]

固まってしまう場合は、wget --no-passive-ftp ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
として、パッシブモードではなく、アクティブモードでダウンロードする。

[root@server ~]# tar zxvf qmail-1.03.tar.gz
qmail-1.03/
qmail-1.03/BLURB
qmail-1.03/BLURB2
    ・
    ・
    ・
qmail-1.03/constmap.h
qmail-1.03/constmap.c

[root@server ~]# cd qmail-1.03

[root@server qmail-1.03]# wget http://www.itheart.com/phpgw/qmail-date-localtime.patch
                           ↑ ← 日本標準時間対応パッチダウンロード 
--13:49:44--  http://www.itheart.com/phpgw/qmail-date-localtime.patch
www.itheart.com をDNSに問いあわせています... 211.13.204.13
www.itheart.com|211.13.204.13|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 2603 (2.5K) [text/plain]
Saving to: `qmail-date-localtime.patch'

100%[======================================================>] 2,603       --.-K/s   in 0.03s  

13:49:45 (98.2 KB/s) - `qmail-date-localtime.patch' を保存しました [2603/2603]

[root@server qmail-1.03]# wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz
                           ↑ SMTP-Auth対応パッチダウンロード
--13:51:41--  http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz
members.elysium.pl をDNSに問いあわせています... 212.106.4.50
members.elysium.pl|212.106.4.50|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 8798 (8.6K) [application/x-gzip]
Saving to: `qmail-smtpd-auth-0.31.tar.gz'

100%[======================================================>] 8,798       9.49K/s   in 0.9s   

13:51:43 (9.49 KB/s) - `qmail-smtpd-auth-0.31.tar.gz' を保存しました [8798/8798]

[root@server qmail-1.03]# wget http://qmail.mirrors.summersault.com/qmail-smtpd-relay-reject
                           ↑ 不正中継拒否対応パッチダウンロード
--14:11:18--  http://qmail.mirrors.summersault.com/qmail-smtpd-relay-reject
qmail.mirrors.summersault.com をDNSに問いあわせています... 12.161.105.146
qmail.mirrors.summersault.com|12.161.105.146|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1230 (1.2K) [text/plain]
Saving to: `qmail-smtpd-relay-reject'

100%[======================================================>] 1,230       --.-K/s   in 0s     

14:11:19 (66.6 MB/s) - `qmail-smtpd-relay-reject' を保存しました [1230/1230]

[root@server qmail-1.03]# tar zxvf qmail-smtpd-auth-0.31.tar.gz
                          ↑ SMTP-Auth対応パッチ展開  
qmail-smtpd-auth-0.31/
qmail-smtpd-auth-0.31/auth.patch
qmail-smtpd-auth-0.31/CHANGES
qmail-smtpd-auth-0.31/base64.c
qmail-smtpd-auth-0.31/base64.h
qmail-smtpd-auth-0.31/README.auth

[root@server qmail-1.03]# /bin/mv qmail-smtpd-auth-0.31/* . ← SMTP-Auth対応パッチをqmail展開先ディレクトリへ移動

[root@server qmail-1.03]# patch < qmail-date-localtime.patch ← 日本標準時間対応パッチ施行

patching file date822fmt.c

[root@server qmail-1.03]# patch < auth.patch ← SMTP-Auth対応パッチ施行
patching file Makefile
patching file TARGETS
patching file qmail-smtpd.8
patching file qmail-smtpd.c

[root@server qmail-1.03]# patch < qmail-smtpd-relay-reject ← 不正中継拒否対応パッチ施行
patching file qmail-smtpd.c
Hunk #1 succeeded at 56 (offset 3 lines).
Hunk #2 succeeded at 226 (offset 9 lines).
Hunk #3 succeeded at 277 (offset 11 lines).


[root@server qmail-1.03]# vi error.h ← error.h編集
#ifndef ERROR_H
#define ERROR_H

extern int errno;

#include<errno.h>← 変更

extern int error_intr;
extern int error_nomem;
    ・
    ・
[root@server qmail-1.03]# make setup check ← qmailインストール
    ・
    ・
    ・
./install
./instcheck

[root@server qmail-1.03]# ./config-fast `hostname` ← qmail初期設定

Your fully qualified host name is server.arisonsvr.org.
Putting server.arisonsvr.org into control/me...
Putting arisonsvr.org into control/defaultdomain...
Putting arisonsvr.org into control/plusdomain...
Putting server.arisonsvr.org into control/locals...
Putting server.arisonsvr.org into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to server.arisonsvr.org.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!

[root@server qmail-1.03]# echo `hostname -d` >> /var/qmail/control/me ← 自ドメイン名を送信元ドメイン名にする

[root@server qmail-1.03]# echo `hostname -d` >> /var/qmail/control/rcpthosts ← 自ドメイン名を受信ドメイン名として追加

[root@server qmail-1.03]# echo `hostname -d` >> /var/qmail/control/locals ← 自ドメイン名をローカルドメイン名として追加

[root@server qmail-1.03]# cd ← qmail展開先ディレクトリを抜ける

[root@server ~]# echo "MANPATH /var/qmail/man" >> /etc/man.config ← manコマンドでqmailコマンドのマニュアル
                                                                          を参照できるようにする
[root@server ~]# rm -rf qmail-1.03 ← qmail展開先ディレクトリ削除

[root@server ~]# rm -f qmail-1.03.tar.gz ← ダウンロードしたqmail削除
    

上記では、qmailの制御ファイル に自ドメインを登録しています。

 
   
◆checkpasswordインストール <<TOP
   

SMTP認証、POP認証に使用するcheckpasswordをインストールする

最新版は、ダウンロードサイトで確認する。

[root@server ~]# wget http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz ← checkpasswordダウンロード
	
--15:49:27--  http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz
           => `checkpassword-0.90.tar.gz'
cr.yp.to をDNSに問いあわせています... 131.193.178.160
cr.yp.to[131.193.178.160]:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 15,631 [application/x-gzip]

100%[=================================================>] 15,631        44.92K/s

15:49:27 (44.78 KB/s) - `checkpassword-0.90.tar.gz' saved [15,631/15,631]

[root@server ~]# tar zxvf checkpassword-0.90.tar.gz ← checkpassword展開

[root@server ~]# cd checkpassword-0.90 ← checkpassword展開先ディレクトリへ移動

[root@server checkpassword-0.90]# vi error.h ← error.h編集

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

[root@server checkpassword-0.90]# make && make setup check ← checkpasswordインストール
・
・
・
./install
./instcheck

[root@server checkpassword-0.90]# cd ← checkpassword展開先ディレクトリを抜ける

[root@server ~]# rm -rf checkpassword-0.90 ← checkpassword展開先ディレクトリ削除

[root@server ~]# rm -f checkpassword-0.90.tar.gz ← ダウンロードしたcheckpassword削除

[root@server ~]# chown root:nofiles /bin/checkpassword ← checkpasswordの所有者、所有グループ変更

[root@server ~]# chmod 4750 /bin/checkpassword ← checkpasswordが所有者権限で動作するように設定
      
 
   
◆tcpserverのインストール <<TOP
   

qmailへのSMTP接続制御を行うため、tcpserverが含まれたucspi-tcpをインストールする。

[root@server ~]# wget ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz← ucspi-tcpダウンロード
	
	--17:49:09--  ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz
=> `ucspi-tcp-0.88.tar.gz'
ftp.jp.qmail.org をDNSに問いあわせています... 202.41.218.243
ftp.jp.qmail.org|202.41.218.243|:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。    ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。  ==> CWD /qmail ... 完了しました。
==> PASV ... 完了しました。    ==> RETR ucspi-tcp-0.88.tar.gz ... 完了しました。      
[ <=>                                                                        ] 53,019        --.--K/s
17:49:10 (371.23 KB/s) - `ucspi-tcp-0.88.tar.gz' を保存しました [53019]

[root@server ~]#tar zxvf ucspi-tcp-0.88.tar.gz ← ucspi-tcp展開

[root@server ~]# cd ucspi-tcp-0.88 ← ucspi-tcp展開先ディレクトリへ移動

[root@server ucspi-tcp-0.88]# vi error.h ← error.h編集
extern int errno;
				  ↓
#include<errno.h> ← 変更(エラー対策)
     
[root@SERVER ucspi-tcp-0.88]# make setup check ← ucspi-tcpインストール
・ 
・
・
./install
./instcheck

[root@SERVER ucspi-tcp-0.88]# cd ← ucspi-tcp展開先ディレクトリを抜ける

[root@SERVER ~]# rm -rf ucspi-tcp-0.88 ← ucspi-tcp展開先ディレクトリ削除

[root@SERVER ~]# rm -f ucspi-tcp-0.88.tar.gz ← ダウンロードしたucspi-tcp削除

[root@SERVER ~]# echo '127.:allow,RELAYCLIENT=""' > /etc/tcp.smtp ← 中継許可ホストとして自ホストを/etc/tcp.smtpへ登録

[root@SERVER ~]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp ← /etc/tcp.smtpのcdb形式データベース作成
 
   
◆dot-forwardインストール <<TOP
sendmail用ユーザ別メール転送設定ファイル(~/.forward)をqmailでも利用する場合のみ、dot-forwardをインストールする  
dot-forwardの最新版のURLはdot-forwardダウンロードページで確認すること
[root@server ~]# wget http://cr.yp.to/software/dot-forward-0.71.tar.gz ← dot-forwardダウンロード
--15:19:40--  http://cr.yp.to/software/dot-forward-0.71.tar.gz
cr.yp.to をDNSに問いあわせています... 131.193.36.21
cr.yp.to|131.193.36.21|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 26352 (26K) [application/x-gzip]
Saving to: `dot-forward-0.71.tar.gz'

100%[======================================================>] 26,352      7.48K/s   in 3.4s   

15:19:44 (7.48 KB/s) - `dot-forward-0.71.tar.gz' を保存しました [26352/26352]

[root@server ~]# tar zxvf dot-forward-0.71.tar.gz ← dot-forward展開
dot-forward-0.71/
dot-forward-0.71/BLURB
     ・
     ・
     ・
dot-forward-0.71/seek.h
dot-forward-0.71/seek_set.c

[root@server ~]# cd dot-forward-0.71 ← dot-forward展開先ディレクトリへ移動

[root@server dot-forward-0.71]#  vi error.h ← error.h編集
#ifndef ERROR_H
#define ERROR_H

extern int errno;

#include<errno.h>  ← 変更

extern int error_intr;
extern int error_nomem;
extern int error_noent;
   ・
extern int error_acces;
"error.h" 23L, 431C written
[root@server dot-forward-0.71]# make setup check ← dot-forwardインストール
    ・
    ・
instcheck.c:80: 警告: return type of ‘main’ is not ‘int’
./load instcheck hier.o auto_qmail.o strerr.a substdio.a \
        error.a str.a 
./instcheck
[root@server dot-forward-0.71]# cd ← dot-forward展開先ディレクトリを抜ける

[root@server ~]# rm -rf dot-forward-0.71 ← dot-forward展開先ディレクトリ削除

[root@server ~]# rm -f dot-forward-0.71.tar.gz ← ダウンロードしたdot-forward削除

[root@server ~]#

   
◆fastforwardインストール
<<TOP
sendmail用システム共通メール転送設定ファイル(/etc/aliases)をqmailで
	利用するのに必要なfastforwardをインストールする
	qmailでもaliasesが使えるようになる 
 
fastforwardの最新版のURLはfastforwardダウンロードページで確認すること  
[root@server ~]# wget http://cr.yp.to/software/fastforward-0.51.tar.gz ← fastforwardダウンロード
--16:08:02--  http://cr.yp.to/software/fastforward-0.51.tar.gz
cr.yp.to をDNSに問いあわせています... 131.193.36.21
cr.yp.to|131.193.36.21|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 40659 (40K) [application/x-gzip]
Saving to: `fastforward-0.51.tar.gz'

100%[======================================================>] 40,659      7.73K/s   in 5.1s   

16:08:08 (7.73 KB/s) - `fastforward-0.51.tar.gz' を保存しました [40659/40659]

[root@server ~]# tar zxvf fastforward-0.51.tar.gz ← fastforward展開
fastforward-0.51/
fastforward-0.51/BLURB
    ・
    ・
    ・
fastforward-0.51/coe.h
fastforward-0.51/coe.c

[root@server ~]# cd fastforward-0.51 ← fastforward展開先ディレクトリへ移動

[root@server fastforward-0.51]# vi error.h ← error.h編集
#ifndef ERROR_H
#define ERROR_H

extern int errno;

#include<errno.h> ← 変更

extern int error_intr;
extern int error_nomem;

[root@server fastforward-0.51]# make setup check ← fastforwardインストール
    ・
    ・
    ・   
instcheck.c:80: 警告: return type of ‘main’ is not ‘int’
./load instcheck hier.o auto_qmail.o strerr.a substdio.a \
        error.a str.a 
./instcheck

[root@server fastforward-0.51]# cd ← fastforward展開先ディレクトリを抜ける

[root@server ~]# rm -rf fastforward-0.51 ← fastforward展開先ディレクトリ削除

[root@server ~]# rm -f fastforward-0.51.tar.gz ← ダウンロードしたfastforward削除

[root@server ~]# chmod 0 /usr/bin/newaliases ← 旧newaliasesコマンド無効化

[root@server ~]# mv /usr/bin/newaliases /usr/bin/newaliases.bak ← 旧newaliasesコマンドをリネーム

[root@server ~]# ln -s /var/qmail/bin/newaliases /usr/bin/newaliases
                   ↑ newaliasesコマンドをfastforwardに置換え  

[root@server ~]# newaliases ← /etc/aliasesのcdb形式データベース作成

[root@server ~]# ll /etc/aliases.cdb ← /etc/aliasesのcdb形式データベース作成確認
-rw-r--r-- 1 root root 6821 12月 27 16:20 /etc/aliases.cdb

[root@server ~]# echo "|/var/qmail/bin/fastforward -p -d /etc/aliases.cdb" > /var/qmail/alias/.qmail-default
         ↑ /etc/aliases.cdbをqmailが参照するように設定

[root@server ~]# 
 
   
◆qmailの設定
<<TOP
   
   
[root@server ~]# echo "10485760" > /var/qmail/control/databytes
		       ↑ 送受信可能メールサイズを10MB=10*1024*1024に制限(0で無制限)