qmailの最近のブログ記事

備忘録です。

あるqmailのメールサーバに、標準時補正パッチ(qmail-date-localtime.patch)を当てるのを忘れていてたので、パッチを当てて再インストールしたところ、このエラーが発生。
(qmailのパッチ宛て、インストール方法などの解説はこちら http://www.igreks.jp/dev/2011/01/qmailvpopmailqmailadmin.html

・内部⇒内部はOK
・内部⇒外部もOK
・外部⇒内部のみNGでメールが送れない。

つまり外部ホストのアドレスからのみ、このqmailをインストールしたサーバのアドレスにメールが送れない。

メーラーで送信する際の、よくあるリレーエラーではなく、一旦送信した後、mailer-daemonさんからエラーが返ってきて、

--------------------------------------------------------------------------------------

This is the mail system at host sv313.xserver.jp.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The mail system

<*****@hoge.com>: host mail.hoge.com[xxx.xxx.xxx.xxx] said: 553
sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) (in reply
to RCPT TO command)

--------------------------------------------------------------------------------------

と、怒られる。

最初、送信する側の外部ホスト(上記で行くとエックスサーバ)がおかしいのかと思いきや、他のYahooメールやGmailからでもダメ。

確認したところ、tcp.smtpファイルも、DNS設定も問題なし。


というわけで、メールに書いてある、rcpthostsを見てみたら、以下のようになっていた。

-------------------------------------------------------------------------------------
***.hoge.com
localhost
-------------------------------------------------------------------------------------
※「***」の部分は、このサーバのホスト名


あ、そうだ。
以前、最初にqmailインストールしたときに、すでにqmailが稼働しているサーバの設定を真似してたんだった。

真似したサーバのrcpthostsを見てみると、上記の他に、「aaa.jp」(ホスト名無しのドメインのみ)が追記されている。

なるほど、上記だけでは、「user@***.hoge.com」ならOKだが、「user@hoge.com」ではNGになるわけだ。
再インストールしたから、これが初期化されちゃったのね。

というわけで、rcpthostsを訂正。

-------------------------------------------------------------------------------------
# vi /var/qmail/control/rcpthosts

(以下を追記。念のため3つほど)

hoge.com
.hoge.com
mail.hoge.com

# :wq (保存して終了)
-------------------------------------------------------------------------------------

webminからだったら、左のメニューから、

「サーバ」
 ↓
「Qmail Mail Server」
 ↓
「Accepted Domains(rcpthosts)」
 ↓
上記のドメインを追記し保存


最後にqmailを再起動して終了。


無事、送信できるようになりました。
よかったよかった。
centOSですでに稼働中のqmailにdomainkeysを適用させる方法まとめ(送信側)

# cd /usr/local/src

■関連ファイルのダウンロード
# wget http://sourceforge.net/projects/domainkeys/files/libdomainkeys/0.69/libdomainkeys-0.69.tar.gz/download
# wget http://www.qmail.org/qmail-1.03-dk-0.54.patch
# wget http://jeremy.kister.net/code/qmail-dk-0.54-auth.patch

■tarファイル展開
# tar -zxvf libdomainkeys-0.69.tar.gz
# cd libdomainkeys-0.69

■エラー対策
# vi dns.lib
下記を記述し保存
----------------------------
-lresolv
----------------------------
# make
# cd ../

■次に、qmail-1.03の中で、qmail-dkファイルを作るのだが、ここで、以前qmail本体をインストールしたときに使った「qmail-1.03」ディレクトリを使うと上手くいかない場合がある。
既存の「qmail-1.03」ディレクトリは削除し、新しいqmail-1.03をダウンロードするか、以前使ったtarボールがあればそれを新たに解凍して使う。

# rm -rf qmail-1.03
# tar -xvzf qmail-1.03.tar.gz

■ここで、qmail.cに以下の記述があるか見ておく。
# vi qmail-1.03/qmail.c
--------------------------------------------------------------------------------
static void setup_qqargs()
{
if(!binqqargs[0])
binqqargs[0] = env_get("QMAILQUEUE");
if(!binqqargs[0])
binqqargs[0] = "bin/qmail-queue";
}
--------------------------------------------------------------------------------
■これが無いと、環境変数「QMAILQUEUE」が使えないので、専用のパッチををダウンロードしてあてておく。ある場合はそのままでOK。
# wget http://qmail.jms1.net/patches/qmailqueue.patch
# patch -d qmail-1.03 < qmailqueue.patch


■その他必要なパッチあて
echo 'gcc -02 -include /usr/include/errno.h' > qmail-1.03/conf-cc
# patch -d qmail-1.03 < qmail-1.03-dk-0.54.patch
# patch -d qmail-1.03 < qmail-dk-0.54-auth.patch

■次にqmail-dkを生成するが、libdomainkeysのヘッダファイルが参照できない場合があるようなので、専用のディレクトリ空間を作成し、そこで行うようにする。

# mkdir test
# cp -Rpf qmail-1.03 test
# cp -Rpf libdomainkeys-0.69/* test/
# cd test/qmail-1.03
# make qmail-dk

■上記が成功すれば、test/qmail-1.03 の中に「qmail-dk」ファイルが生成される。

※qmailqueueのパッチを当てた場合はqmailを停止し、再度、
# make clean
# make setup check
しておく。

■キュー処理ディレクトリにqmail-dkコピー&所有者変更
# cp qmail-dk /var/qmail/bin/
# cp qmail-dk.8 /var/qmail/man/man8/
# chown qmailq /var/qmail/bin/qmail-dk
# chmod 4711 /var/qmail/bin/qmail-dk


■署名用の鍵ファイル作成
# mkdir -p /etc/domainkeys
# mkdir -p /etc/domainkeys/example.com
# cd /etc/domainkeys/example.com
# openssl genrsa -out rsa.private 768
# openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM
# mv rsa.private default
# chown -Rf qmailq /etc/domainkeys
# chmod 0600 default
# grep -v ^- rsa.public | perl -e 'while(<>){chop;$l.=$_;}print "t=y; p=$l;\n";'
↑で表示された、文字列をコピーしておく

■vpopmailのsmtpルールを編集
# cd /home/vpopmail/etc
# vi tcp.smtp
以下の例ように修正
-------------------------------------------------------------------------------------------------------------
192.168.:allow,RELAYCLIENT="",DKSIGN="/etc/domainkeys/example.com/default",QMAILQUEUE="bin/qmail-dk"

:allow,DKVERIFY="DEGIJKfh",QMAILQUEUE="bin/qmail-dk"
-------------------------------------------------------------------------------------------------------------
■CDB化
# tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp


■POPbeforeSMTPなどを利用し、ローカルのメーラからも配信している場合は、/home/vpopmail/etc/open-smtpなどで、qmail-dkを指定できるよう変更しておく。

# cd /usr/local/src/vpopmail-5.4.32 (←以前に本体インストール時に使った残り。なければダウンロードし解凍しておく)
# vi vpopmail.c
下記の個所を修正。
-------------------------------------------------------------------------------------------------------------

fprintf( fs_tmp_file, "%s:allow,RELAYCLIENT=\"\",RBLSMTPD=\"\"t%d\n",

fprintf( fs_tmp_file, "%s:allow,RELAYCLIENT=\"\",RBLSMTPD=\"\",DKSIGN=\"/etc/domainkeys/example.com/default\",QMAILQUEUE=\"bin/qmail-dk\"\t%d\n",

-------------------------------------------------------------------------------------------------------------
qmailを停止し
# make clean、
# make
# make install


■DNSのレコードに以下を追加
-------------------------------------------------------------------------------------------------------------
_domainkey.example.com. IN TXT "k=rsa; t=y; o=~;"
default._domainkey.example.com. IN TXT "コピーしておいた文字列"
-------------------------------------------------------------------------------------------------------------
※コピーしておいた文字列⇒「t=y; p=*********;」

■DNSサーバ(BIND)の再起動

■qmailの(再)起動
# /etc/init.d/qmail stop
# /etc/init.d/qmail start

■gmailやyahooメールにメールを送って、受信したメールのヘッダに、
--------------------------------------------------------------------------------------------
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
s=default; d=example.com;
b=公開鍵;
--------------------------------------------------------------------------------------------
などの記述があればOK。


参考資料:
http://jeremy.kister.net/howto/dk.html
http://blog.cles.jp/item/1778
http://www.4web8.com/644.html
http://blog.guideme.jp/archives/106
http://www.weloveya.com/oshigoto/qMail2.html


■余談

同一LAN内、同一ドメインで、負荷分散のため、複数のSMTPサーバから配信する場合は、そのSMTPサーバの分だけDNSにレコードを登録するが必要ある(はず)。

どのSMTPサーバかを判別するために、各レコード、セレクタ名(上記でいくと「default」の部分)を変えてやればいい(はず)。

2台目のSMTPの/var/domainkeys/example.com/内に秘密鍵を作ったら(上記の例でいくと「rsa.private」)、そのファイル名を「default2」とかにしてやって、
その他各ファイルDKSIGN指定の部分を
----------------------------------------------------------------------
DKSIGN="/etc/domainkeys/example.com/default2
----------------------------------------------------------------------
のようにしてやる(予定)。

そしてDNSのレコードに書くとき、
----------------------------------------------------------------------
default2._domainkey.example.com. IN TXT "2台目のSMTPサーバの公開鍵"
----------------------------------------------------------------------
と追加してやればよい(はず)。
  ↓
未検証・・・
何も難しいことはなかった。

DNSのレコードに下記のようにTXTレコードを追加し、BINDを再起動するだけ。

■MXレコードに登録されているIPのみ一括指定する場合
hoge.jp. IN TXT "v=spf1 +mx ~all"

■IPを指定する場合
hoge.jp. IN TXT "v=spf1 ip4:対象のSMTPサーバのIPアドレス ~all"

※IPアドレスの部分は「111.222.333.444/29」のようにネットマスク指定でもOK

※IPアドレスを複数登録したい場合は、
hoge.jp. IN TXT "v=spf1 ip4:対象のSMTPサーバのIPアドレス1 ip4:対象のSMTPサーバのIPアドレス2 ~all"
のように半角スペースで区切って記述する。


ここに指定したSMTPサーバから、試しにSPFに対応しているgmailにテスト送信すると、下記のようなメールヘッダが追加されている。

--------------------------------------------------------------------------------------
Received-SPF: pass (google.com: domain of hoge@hoge.jp designates 111.222.333.444 as permitted sender) client-ip=111.222.333.444;
--------------------------------------------------------------------------------------
システム開発上、ユーザがブラウザからメールマガジンを作成した時に、同時にエラーメール処理用のアドレスも作成されるようにする、逆にメルマガを削除したらそのアドレスも削除される必要があったためメモ。

今回のMTAはqmailを使うとのことで、アカウントの管理は必然的にvpopmailとなる。

しかし、qmailadminを使わないで新規アカウント作成(vadduser)・削除(vdeluser)を行うためには、基本的にrootでの操作となる。

単純にスクリプト内で

system("/home/vpopmail/bin/vadduser hoge@hoge.jp hogepass");

とやっただけでは、もちろんうまくいくはずがない。

というわけで、Cと連携して上手いことやってくれるモジュール様がないかと、CPANを探してみたらありました。
その名も「vpopmail.pm」。

呼び出す関数名もまさにvpopmailコマンドとほぼ同じ。

しかし、最終リリースは2001年・・・やばいんじゃないの?

かろうじてCPAN.pmをからインストールできたものの、説明も短すぎて、当然
use vpopmail;
vadduser(引数いろいろ);
とかやれば新規にアカウントを作ってくれると思いきや全然ダメ。

vpopmailのバージョンを見てきてくれる関数だけはなぜか動いた(笑)
まあ、関数名も最近のvpopmailのコマンドといまいち合ってないし。

というわけでさんざん悩んだ結果、sudoを使うことで決定。

以下手順。

1.新規バーチャルアカウントを作成する簡単なスクリプト(vadduser.cgi)を作成しCGIの動くディレクトリに置く。

vadduser.cgi
-----------------------------------------------------------------------------------------
#!/usr/bin/perl

use strict;

# コマンド発行
`sudo -u root /home/vpopmail/bin/vadduser hoge@hoge.jp hogepass`;
exit;
1
-----------------------------------------------------------------------------------------

2.sudoの設定ファイルに許可コマンドを追記

# visudo

(以下を追記)
apache ALL=(root) NOPASSWD: /home/vpopmail/bin/vadduser,/home/vpopmail/bin/vdeluser

同時に、以下の行をコメント化

Defaults requiretty
   ↓
#Defaults requiretty

※これをコメント化しないと、最近のLinuxでは、
sudo: apache : sorry, you must have a tty to run sudo ; TTY=unknown ;......
と怒られる。

このエラーは、/var/log/secure を見ればわかる。

保存して終了
:wq


3.vadduser.cgiをブラウザから実行してみる。

4.確認

popアカウント一覧に、「hoge」が追加されているのを確認

同時に、/home/vpopmail/domains/hoge@hoge.jp 内に、ディレクトリ「hoge」が作成されているのでOK!!



ああ疲れた今回も。


実務的には、このvadduser.cgiをAPIとしてドキュメントルート外に置いて、第三者からは直接アクセスされないようにし、他のCGIからシステムコールで呼んだりした方がセキュアかなと。


参考URL:
http://hibari.2ch.net/test/read.cgi/php/1024741312/l50
http://d.hatena.ne.jp/kakurasan/20100512/p1
http://old.ikoinoba.net/index.php?UID=1188143501
http://search.cpan.org/~sscanlon/vpopmail-0.08/
空メール登録のシステム構築自体は以下の通り。
http://www.igreks.jp/dev/2010/06/postfixperl.html

上記の場合は、アイリアス設定ファイルに直接転送先を書いているが、転送用ファイル「.qmail」や「.forward」にパイプで転送先を書いて、ユーザディレクトリ直下に配置してももちろん構わない。

ここで注意したいのが、「.qmail」にパイプ処理を書くとき、空行を作ってはならないということだ。

「.qmail」ファイルは本来の用途で使うならば、転送したいメールアドレスが一行に1つずつ書いてある。
qmailはこれを上から順に処理していく。

つまり、空行が合った場合でも、「(空文字列)@ドメイン」と認識してしまう。

したがって、そんなメールボックスはありませんよ!と、Mailer-Daemonから送信元にエラーが返ってきてしまう。

最後の行を改行して終わらないと気持ちが悪いのは同感だが、この場合はやってはいけない。


.qmail

○良い例
---------------------------------------------------------
| プログラムへのパス (コマンドライン引数)(改行なし)
---------------------------------------------------------

×悪い例
---------------------------------------------------------
| プログラムへのパス (コマンドライン引数)(改行)
(空行)
---------------------------------------------------------


あと、qmailの場合も、postfix同様、パイプで渡されたメールキューは勝手に削除されてるっぽい。ログに「remove」とかいう記載はないが。

渡したプログラムで「exit;」とかしてないと、もしかしたら続いちゃうのかも。
【インストールに必要なユーザ、グループを作成する 】

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

【ダウンロード】

[user@linux qmail]$ wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz ←■ qmailダウンロード
※ wgetが固まってダウンロードできない場合は下記手順でダウンロード
[user@linux qmail]$ wget --no-passive-ftp ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz ←■ qmailダウンロード
[user@linux qmail]$ wget http://www.itheart.com/phpgw/qmail-date-localtime.patch ←■ 日本標準時間対応パッチダウンロード
[user@linux qmail]$ wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz ←■ SMTP-Auth対応パッチダウンロード
[user@linux qmail]$ wget http://qmail.mirrors.summersault.com/qmail-smtpd-relay-reject ←■ 不正中継拒否対応パッチダウンロード
[user@linux qmail]$ wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch ←■ エラー対策patchダウンロード
[user@linux qmail]$ wget http://tomclegg.net/qmail/qmail-remote-auth.patch ←■ 外部SMTP-Auth対応パッチダウンロード

【qmail インストール】

[user@linux qmail]$ tar zxvf qmail-1.03.tar.gz ←■ qmail展開

[user@linux qmail]$ tar zxvf qmail-smtpd-auth-0.31.tar.gz ←■ SMTP-Auth対応パッチ展開
[user@linux qmail]$ mv qmail-smtpd-auth-0.31/* ./qmail-1.03/ ←■ SMTP-Auth対応パッチをqmail展開先ディレクトリへ移動

[user@linux]$ cd qmail-1.03 ←■ qmail展開先ディレクトリへ移動
[user@linux qmail-1.03]$ patch -p1 < ../qmail-date-localtime.patch ←■ 日本標準時間対応パッチ施行

[user@linux qmail-1.03]$ patch < auth.patch ←■ SMTP-Auth対応パッチ施行
patching file Makefile
patching file TARGETS
patching file qmail-smtpd.8
patching file qmail-smtpd.c

[user@linux qmail-1.03]$ patch < ../qmail-remote-auth.patch ←■ 外部SMTP-Auth対応パッチ施行
patching file qmail-remote.c
patching file Makefile
Hunk #1 succeeded at 1441 (offset -4 lines).

[user@linux 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).

[user@linux qmail-1.03]$ patch < ../qmail-1.03.errno.patch ←■ エラー発生対策 error.h をパッチ施行

[root@linux qmail-1.03]# su - ←■ root権限になる
[root@linux qmail-1.03]# cd /home/user/qmail/qmail-1.03 ←■ ディレクトリ移動
[root@linux qmail-1.03]# make setup check ←■ qmailインストール

~ 中略 ~

./install
./instcheck
[root@linux qmail-1.03]#

※↑何か新しくパッチを当てたりして、再コンパイルする場合は、
一旦 qmailを停止し、# make clean
その後、# make setup check

【error.h ファイルを直接編集する場合 】

[user@linux qmail-1.03]$ vi error.h ←■ error.h直接編集する場合
extern int errno;
↓■ 変更(書き換える)
#include
[user@linux qmail-1.03]$


【qmail-remote-auth だけインストールする場合 】

qmail-remote-auth(外部SMTP-Auth対応パッチ)だけを後からインストールする場合 †

[root@linux qmail-1.03]# ls /var/qmail/bin/qmail-remote ←■ qmail-remotetの存在確認
[root@linux qmail-1.03]# patch < ../qmail-remote-auth.patch ←■ 外部SMTP-Auth対応パッチ施行
patching file qmail-remote.c
patching file Makefile
Hunk #1 succeeded at 1441 (offset -4 lines).

[root@linux qmail-1.03]# make qmail-remote ←■ qmail-remoteのみコンパイル

[root@linux qmail-1.03]# install -m 711 qmail-remote /var/qmail/bin/qmail-remote ←■ qmail-remoteのみインストール


【qmail 設定ファイルの作成 】

※ /var/qmail/control 内にqmailの制御ファイルが作成されます。

[root@linux ~]# cd ***/qmail-1.03/ ←■ qmail 展開先ディレクトリへ移動
[root@linux qmail-1.03]# ./config-fast `hostname -d`
Your fully qualified host name is example.com.
Putting hitsujigumi into control/me...
Putting hitsujigumi into control/defaultdomain...
Putting hitsujigumi into control/plusdomain...
Putting hitsujigumi into control/locals...
Putting hitsujigumi into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to example.com.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
[root@linux qmail-1.03]#

※ 注意 /var/qmail/control/me 内に、localhost を入れるとLogwatchからのメールが届かない。

【マニュアルを参照できるようにする 】

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

[root@linux]# echo "MANPATH /var/qmail/man" >> /etc/man.config ←■ manコマンドでqmailコマンドのマニュアルを参照できるようにする


【tcsh インストール 】

tcsh は、UNIX系のシェルの一つ

[root@linux ~]# yum list | grep tcsh ←■ インストール確認
** Message: sqlite cache needs updating, reading in metadata
tcsh.i386 6.14-12.el5 installed ←■ インストール済
[root@linux ~]#
[root@linux ~]# yum -y install tcsh ←■ cシェルインストール


【OP25B(Outbound Port 25 Blocking)対策 】※動的IPの自宅サーバの場合

* SMTPサーバ名 = プロバイダのSMTPサーバ名
* ユーザー名 = プロバイダのメールアカウント名
* パスワード = プロバイダのメールパスワード


設定例1 SMTPサーバ名のみ

[root@linux ~]# echo ":SMTPサーバ名" > /var/qmail/control/smtproutes ←■ SMTP認証情報設定

[root@linux ~]# echo ":smtp.nifty.com" > /var/qmail/control/smtproutes ←■ 設定例


設定例2 SMTPサーバ名 + 認証情報

[root@linux ~]# echo ":SMTPサーバ名 ユーザー名 パスワード" > /var/qmail/control/smtproutes ←■ SMTP認証情報設定

[root@linux ~]# echo ":smtp.nifty.com user password" > /var/qmail/control/smtproutes ←■ 設定例


設定例3 SMTPサーバ名 + ポート番号 + 認証情報 †

[root@linux ~]# echo ":SMTPサーバ名:587 ユーザー名 パスワード" > /var/qmail/control/smtproutes ←■ SMTP認証情報設定

[root@linux ~]# echo ":smtp.nifty.com:587 user password" > /var/qmail/control/smtproutes ←■ 設定例


※ 直接編集する場合

[root@linux ~]# vi /var/qmail/control/smtproutes
:SMTPサーバ名:587 ユーザー名 パスワード
:smtp.nifty.com:587 user@nifty.com Password ←■ 例
[root@linux ~]# 保存する


ポート:587の設定確認

[root@linux ~]# less /etc/services
submission 587/tcp msa # mail message submission
submission 587/udp msa # mail message submission


------------------------------------------------------------------------------------------------------


【vpopmail 用 ユーザ・グループ作成 】

[root@linux ~]# groupadd -g 89 vchkpw ←■ vpopmail用グループの vchkpwグループ作成
[root@linux ~]# useradd -g vchkpw -u 89 vpopmail -s /sbin/nologin -m -k /dev/null ←■ vpopmailユーザ作成
[root@linux ~]# chmod 755 /home/vpopmail ←■ パーミッション変更

【再インストールする場合】

[root@linux ~]# cd ....vpopmail-5.4.25 ←■ vpopmailインストール用ディレクトリへ移動
[root@linux vpopmail-5.4.25]# make distclean ←■ 以前のmakeファイルを削除


【リレー許可DBの作成 】

[root@linux ~]# mkdir -p /home/vpopmail/etc/ ←■ インストール前に必要なディレクトリ作成
[root@linux ~]# vi /home/vpopmail/etc/tcp.smtp ←■リレー許可の元となるファイル作成

 127.:allow,RELAYCLIENT="" ←■ リレー許可として127.を追加
 XXX.XXX.XXX.:allow,RELAYCLIENT="" ←■任意で許可するIPを指定
 XXX.XXX.XXX.XXX-XXX:allow,RELAYCLIENT="" ←■まとめて指定もできる
 :allow

[root@linux ~]# tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp ←■ cdbの作成
[root@linux ~]# chown -R vpopmail. /home/vpopmail/etc ←■ 作成したディレクトリ以下の所有者変更

【configure時のオプション】

--enable-logging=y ←■ メール受信時のログを記録する場合は「y」
--enable-roaming-users=y ←■ POP before SMTP認証を使う場合は「y」
--enable-relay-clear-minutes=10 ←■ POP before SMTP用 relayがclearされる時間を10分に指定(デフォルトは180分)
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp ←■ リレー許可ファイルのパス(問題が起これば指定してみる)
--enable-clear-passwd=n ←■ パスワードを平文で保存しないようにする場合は追加(SMTP認証では指定しない事)


【vpopmail(SMTP認証用)インストール】

[user@linux qmail]$ wget http://nchc.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.25.tar.gz ←■ vpopmailダウンロード
[user@linux qmail]$ tar zxvf vpopmail-5.4.25.tar.gz ←■ vpopmail 展開

[user@linux qmail]$ cd vpopmail-5.4.25 ←■ vpopmail 展開先ディレクトリへ移動

※ メールサーバーでウィルス&スパムチェック導入している場合のみ
[user@linux vpopmail-5.4.25]$ vi vpopmail.c ←■ vpopmail.c 編集(ユーザ追加時に自動でスパムメール用メールボックスを作成)
+----------------------------------------------------------------------------------------
| const char *dirnames[] = {"Maildir", "Maildir/new", "Maildir/cur",
| "Maildir/tmp"};
+----------------------------------------------------------------------------------------
↓■ 変更
+----------------------------------------------------------------------------------------
| const char *dirnames[] = {"Maildir", "Maildir/new", "Maildir/cur", "Maildir/tmp",
| "Maildir/.Spam", "Maildir/.Spam/new", "Maildir/.Spam/cur", "Maildir/.Spam/tmp"};
+----------------------------------------------------------------------------------------

:wq ←■ 保存して閉じる

[user@linux vpopmail-5.4.25]$ vi vchkpw.c ←■ vchkpw.c の修正
hmac_md5( (unsigned char *) challenge, strlen(challenge), (unsigned char *) password, strlen(password), digest);
↓■ 2か所変更 747行目辺り
hmac_md5( (unsigned char *) response, strlen(response), (unsigned char *) password, strlen(password), digest);

return(strcmp(digascii,response));
↓■ 1か所変更 759行目辺り
return(strcmp(digascii,challenge));

:wq ←■ 保存して閉じる

[user@linux vpopmail-5.4.25]$ su - ←■ root権限になる

[root@linux vpopmail-5.4.25]# ./configure \
--enable-qmail-ext=n \
--enable-logging=y                  [Enter] ←■ configure

~ 中略 ~

vpopmail 5.4.25
Current settings
---------------------------------------

vpopmail directory = /home/vpopmail
domains directory = /home/vpopmail/domains
uid = 89
gid = 89
roaming users = OFF --disable-roaming-users (default)
password learning = OFF --disable-learn-passwords (default)
md5 passwords = ON --enable-md5-passwords (default)
file locking = ON --enable-file-locking (default)
vdelivermail fsync = OFF --disable-file-sync (default)
make seekable = ON --enable-make-seekable (default)
clear passwd = ON --enable-clear-passwd (default)
user dir hashing = ON --enable-users-big-dir (default)
address extensions = OFF --disable-qmail-ext (default)
ip alias = OFF --disable-ip-alias-domains (default)
onchange script = OFF --disable-onchange-script (default)
auth module = cdb --enable-auth-module=cdb (default)
auth inc = -Icdb
auth lib =
system passwords = OFF --disable-passwd (default)
pop syslog = show successful and failed login attempts --enable-logging=y
auth logging = ON --enable-auth-logging (default)
spamassassin = OFF --disable-spamassassin (default)
maildrop = OFF --disable-maildrop (default)
[root@linux vpopmail-5.4.25]#

[root@linux vpopmail-5.4.25]# make
[root@linux vpopmail-5.4.25]# make install-strip ←■ vpopmail インストール

[root@linux vpopmail-5.4.25]# chown root. /home/vpopmail/bin/vchkpw ←■ vchkpw にroot権限の設定
[root@linux vpopmail-5.4.25]# chmod 4755 /home/vpopmail/bin/vchkpw ←■ vchkpw のパーミッション変更

[root@linux vpopmail-5.4.25]# cd ../ ←■ vpopmail 展開先ディレクトリを抜ける
[root@linux vpopmail-5.4.25]# rm -rf vpopmail-5.4.25 ←■ vpopmail 展開先ディレクトリ削除
[root@linux vpopmail-5.4.25]# rm -f vpopmail-5.4.25.tar.gz ←■ ダウンロードした vpopmail 削除


※ 参考 SMTP認証時の /home/vpopmail/etc/ 内のファイル一覧

-rw-r--r-- 1 root root 25 5月 22 12:52 inc_deps
-rw-r--r-- 1 root root 42 5月 22 12:52 lib_deps
-rw-r--r-- 1 root root 0 5月 22 13:19 tcp.smtp
-rw-r--r-- 1 vpopmail vchkpw 2048 5月 22 15:00 tcp.smtp.cdb
-rw-r--r-- 1 vpopmail vchkpw 1161 5月 22 12:52 vlimits.default

※ 続いて → qmail + vpopmail/vpopmail 設定


【vpopmail(POP Before SMTP用)インストール 】

[user@linux qmail]$ wget http://nchc.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.25.tar.gz ←■ vpopmailダウンロード
[user@linux qmail]$ tar zxvf vpopmail-5.4.25.tar.gz ←■ vpopmail 展開

[user@linux qmail]$ cd vpopmail-5.4.25 ←■ vpopmail 展開先ディレクトリへ移動

※ メールサーバーでウィルス&スパムチェック導入している場合のみ
[user@linux vpopmail-5.4.25]$ vi vpopmail.c ←■ vpopmail.c 編集(ユーザ追加時に自動でスパムメール用メールボックスを作成)
+----------------------------------------------------------------------------------------
| const char *dirnames[] = {"Maildir", "Maildir/new", "Maildir/cur",
| "Maildir/tmp"};
+----------------------------------------------------------------------------------------
↓■ 変更
+----------------------------------------------------------------------------------------
| const char *dirnames[] = {"Maildir", "Maildir/new", "Maildir/cur", "Maildir/tmp",
| "Maildir/.Spam", "Maildir/.Spam/new", "Maildir/.Spam/cur", "Maildir/.Spam/tmp"};
+----------------------------------------------------------------------------------------

:wq ←■ 保存して閉じる

[user@linux vpopmail-5.4.25]$ su - ←■ root権限になる

[root@linux vpopmail-5.4.25]# ./configure \
--enable-roaming-users=y \
--enable-relay-clear-minutes=10 \
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
--enable-qmail-ext=n \
--enable-logging=y                  [Enter] ←■ configure

~ 中略 ~

vpopmail 5.4.25
Current settings
---------------------------------------

vpopmail directory = /home/vpopmail
domains directory = /home/vpopmail/domains
uid = 89
gid = 89
roaming users = ON --enable-roaming-users
tcpserver file = /home/vpopmail/etc/tcp.smtp
open_smtp file = /home/vpopmail/etc/open-smtp
rebuild tcpserver file = ON --enable-rebuild-tcpserver-file (default)
password learning = OFF --disable-learn-passwords (default)
md5 passwords = ON --enable-md5-passwords (default)
file locking = ON --enable-file-locking (default)
vdelivermail fsync = OFF --disable-file-sync (default)
make seekable = ON --enable-make-seekable (default)
clear passwd = ON --enable-clear-passwd (default)
user dir hashing = ON --enable-users-big-dir (default)
address extensions = OFF --disable-qmail-ext (default)
ip alias = OFF --disable-ip-alias-domains (default)
onchange script = OFF --disable-onchange-script (default)
auth module = cdb --enable-auth-module=cdb (default)
auth inc = -Icdb
auth lib =
system passwords = OFF --disable-passwd (default)
pop syslog = show only failed attempts --enable-logging=e (default)
auth logging = ON --enable-auth-logging (default)
spamassassin = OFF --disable-spamassassin (default)
maildrop = OFF --disable-maildrop (default)
[root@linux vpopmail-5.4.25]#

[root@linux vpopmail-5.4.25]# make
[root@linux vpopmail-5.4.25]# make install-strip ←■ vpopmail インストール

[root@linux vpopmail-5.4.25]# chown root. /home/vpopmail/bin/vchkpw ←■ vchkpw にroot権限の設定
[root@linux vpopmail-5.4.25]# chmod 4755 /home/vpopmail/bin/vchkpw ←■ vchkpw のパーミッション変更

[root@linux vpopmail-5.4.25]# cd ←■ vpopmail 展開先ディレクトリを抜ける
[root@linux vpopmail-5.4.25]# rm -rf vpopmail-5.4.25 ←■ vpopmail 展開先ディレクトリ削除
[root@linux vpopmail-5.4.25]# rm -f vpopmail-5.4.25.tar.gz ←■ ダウンロードした vpopmail 削除


※ 参考 POP Before SMTP時の /home/vpopmail/etc/ 内のファイル一覧 †

-rw-r--r-- 1 root root 25 5月 22 12:52 inc_deps
-rw-r--r-- 1 root root 42 5月 22 12:52 lib_deps
-rw-r--r-- 1 vpopmail vchkpw 0 5月 22 15:00 open-smtp
-rw------- 1 root root 0 5月 22 12:53 open-smtp.lock
-rw-r--r-- 1 root root 0 5月 22 13:19 tcp.smtp
-rw-r--r-- 1 vpopmail vchkpw 2048 5月 22 15:00 tcp.smtp.cdb
-rw-r--r-- 1 vpopmail vchkpw 1161 5月 22 12:52 vlimits.default

↑メール受信時の認証に成功すれば、open-smtp に接続時のIPが登録され tcp.smtp.cdb が更新される。

※もし、open-smtp、open-smtp.lockが生成されていないときは、自分で作る。
vi open-smtp
vi open-smtp.lock
※念のため、open-smpのほうだけ、所有者をvpopmailにしパーミッション変更
chown vpopmail:vchkpw open-smtp
chmod 666 open-smtp


.
【POP Before SMTPもSMTP認証も不要のとき】(ローカルからしか配信しないとき)

[root@linux vpopmail-5.4.25]# ./configure \
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
--enable-qmail-ext=n \
--enable-logging=y

[root@linux vpopmail-5.4.25]# make
[root@linux vpopmail-5.4.25]# make install-strip ←■ vpopmail インストール

[root@linux vpopmail-5.4.25]# chown root. /home/vpopmail/bin/vchkpw ←■ vchkpw にroot権限の設定
[root@linux vpopmail-5.4.25]# chmod 4755 /home/vpopmail/bin/vchkpw ←■ vchkpw のパーミッション変更


【CRON 設定】※POP Before SMTPの場合のみ

POP Before SMTP の場合は、受信認証を通った期限切れIPのを定期的に削除する必要があります。

[root@linux ~]# crontab -e
*/10 * * * * /home/vpopmail/bin/clearopensmtp > /dev/null 2>&1 ←■ 最終行に追記する(10分毎に処理します。)

ちなみにcrontabのある場所は、/var/spool/cron/[ユーザー名]

-------------------------------------------------------------------------------------------------------

【仮想ドメイン登録(追加)】

[root@linux ~]# /home/vpopmail/bin/vadddomain example.jp
Please enter password for postmaster: ←■ 設定したいパスワード入力
enter password again: ←■ 設定したいパスワード再入力
[root@linux ~]#

【仮想ドメイン登録(追加)パスワードをランダムに設定】

[root@linux ~]# /home/vpopmail/bin/vadddomain -r example.jp
Random password: XoC1mfhl ←■ ランダムに設定されたパスワードが自動設定される
[root@linux ~]#

以下のファイルにもドメインが追加されます。

* /var/qmail/control/rcpthosts
* /var/qmail/control/virtualdomains

※もし、「Already exist!」とエラーが出る場合は、下記の削除をしてからもう一度追加する

【仮想ドメイン削除】

[root@linux ~]# /home/vpopmail/bin/vdeldomain example.jp
[root@linux ~]#

以下のファイルからもドメインが削除されます。

* /var/qmail/control/rcpthosts
* /var/qmail/control/virtualdomains


【仮想ユーザ登録(追加)】

メールアドレス(アカウント)を追加する。

[root@linux ~]# /home/vpopmail/bin/vadduser user@example.jp
Please enter password for user@example.jp: ←■ 設定したいパスワード入力
enter password again: ←■ 設定したいパスワード再入力
[root@linux ~]#


【仮想ユーザ削除】

メールアドレス(アカウント)を削除する。
※ 即、メールボックスごと削除されるので注意。

[root@linux ~]# /home/vpopmail/bin/vdeluser user@example.jp
[root@linux ~]#


【仮想ユーザのパスワード変更 】

メールアドレス(アカウント)のPOP認証パスワードを変更する。

[root@linux ~]# /home/vpopmail/bin/vpasswd user@example.jp
Please enter password for user@example.jp:  ←■ 新しいパスワード入力
enter password again: ←■ 新しいパスワード再入力


【全ドメイン・全ユーザー共通の上限を設定 】

※ デフォルト設定です。設定以後の新規作成に適用されます。既存ドメインには適用されないので、各ドメイン毎に設定変更が必要。

[root@linux ~]# vi /home/vpopmail/etc/vlimits.default
quota 100 ←■ (例) 全ドメインのメールボックス総容量を100MBにする
maxmsgcount 10000 ←■ (例) メッセージ総数10,000にする
default_quota 20971520 ←■ (例) 今後新たに作成するユーザーのquotaを20MBにする
default_maxmsgcount 1000 ←■ (例) メッセージ総数1,000にする


【既存ドメインのquota変更例 】

[root@linux ~]# /home/vpopmail/bin/vmoddomlimits -M 20000 -m 1000 -P 20 -L 20 -A 20 -F 20 -R 20 -Q 200 -q 10485760 example.jp


【各ドメイン毎のメールアドレスの受信制限】

デフォルト設定

vpopmail quota 設定

* 書式
o /home/vpopmail/bin/vmoddomlimits [-Q xxx -q xxx -M xxx -m xxx] [Domain Name]

* オプション
オプション 内容 入力値 入力例
-v vpopmail バージョン表示
-M ドメインのメッセージ総数max 数値 20000
-m ユーザー当たりのメッセージ数max 数値 1000
-P アカウント数max 数値 20 無制限は-1
-A 別名数max 数値 20 無制限は-1
-F 転送数max 数値 20 無制限は-1
-R autoresponder数max 数値 20 無制限は-1
-L メーリングリスト数max 数値 20 無制限は-1
-Q ドメイン総容量 バイト数 209715200 or 204800k or 200m or 無制限は0
-q ユーザーquota バイト数 10485760 or 10240k or 10m or 無制限は0


ユーザ毎のメール容量を デフォルトで 50MB に設定する場合

[root@linux ~]# /home/vpopmail/bin/vmoddomlimits -q 52428800 example.jp ←■ バイト単位で設定した場合の例(50 x 1024 x 1024 = 52428800)
[root@linux ~]# /home/vpopmail/bin/vmoddomlimits -q 51200k example.jp ←■ キロバイト単位で設定した場合の例(50 x 1024 = 51200)
[root@linux ~]# /home/vpopmail/bin/vmoddomlimits -q 50m example.jp ←■ メガバイト単位で設定した場合の例
[root@linux ~]# /home/vpopmail/bin/vmoddomlimits -q 0 example.jp ←■ 0 にした場合は無制限

* 直接ファイルを編集する場合

[root@linux ~]# /home/vpopmail/domains/ドメイン指定/.qmailadmin-limits
maxpopaccounts: -1
maxaliases: -1
maxforwards: -1
maxautoresponders: -1
maxmailinglists: -1
quota: 0 ←■ 指示されたドメインの総容量をMByte 単位で指定
maxmsgcount: 0 ←■ 指示されたドメインの最大保持メッセージ数を指定
default_quota: 10485760 ←■ メール容量デフォルト設定値
default_maxmsgcount: 0 ←■ 指示されたドメインに属するメールアカウントの最大保持メッセージ数を指定
perm_account: 0
perm_alias: 0
perm_forward: 0
perm_autoresponder: 0
perm_maillist: 0
perm_quota: 0
perm_defaultquota: 0

:wq ←■ 保存して閉じる


【指定ドメイン内の全ユーザのメール容量を 10MB に制限する場合 】

[root@linux ~]# /home/vpopmail/bin/vsetuserquota example.jp 10m


【制限解除 】

[root@linux ~]# /home/vpopmail/bin/vsetuserquota example.jp noquota


【特定のアドレスのメール容量を 10MB にする】

[root@linux ~]# /home/vpopmail/bin/vsetuserquota user@example.jp 10m


【制限解除】

[root@linux ~]# /home/vpopmail/bin/vsetuserquota user@example.jp noquota


【vpopmail 主要コマンド】

バーチャルドメイン追加 ~vpopmail/bin/vadddomain ドメイン
メールボックス作成 ~vpopmail/bin/vadduser メールアドレス
メールボックス削除 ~vpopmail/bin/vdeluser メールアドレス
バーチャルドメイン削除 ~vpopmail/bin/vdeldomain ドメイン
パスワードの変更 ~vpopmail/bin/vpasswd メールアドレス
ユーザー情報の確認 ~vpopmail/bin/vuserinfo メールアドレス
ドメインquota設定 ~vpopmail/bin/vsetuserquota ドメイン 容量
ユーザーquota設定 ~vpopmail/bin/vsetuserquota メールアドレス 容量
その他ドメイン設定変更 ~vpopmail/bin/vmoddomlimits ドメイン 容量等
その他ユーザー設定変更 ~vpopmail/bin/vmoduser メールアドレス 容量等


-------------------------------------------------------------------------------------------------------


tcpserver インストール †

【通常(非SSL対応版) インストール】

* tcpserver のパス → /usr/local/bin/tcpserver
* tcprules のパス → /usr/local/bin/tcprules

[user@linux qmail]$ wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz ←■ tcpserverダウンロード
[user@linux qmail]$ wget http://www.qmail.org/rpms/patches/ucspi-tcp-0.88.errno.patch ←■ エラー対策patchダウンロード

[user@linux qmail]$ tar zxvf ucspi-tcp-0.88.tar.gz ←■ 展開する

[user@linux qmail]$ cd ucspi-tcp-0.88/ ←■ ディレクトリ移動

※ エラー対策
[user@linux ucspi-tcp-0.88]$ patch < ../ucspi-tcp-0.88.errno.patch ←■ error.h パッチファイル施行

 ※パッチ施行確認
[user@linux ucspi-tcp-0.88]# vi error.h

extern int errno;の行の下に、
#include
が記載されていればOK。なければ手で記載。


[user@linux qmail]$ su - ←■ root権限になる
[root@linux qmail]# make setup check

~ 中略 ~

./install
./instcheck
[root@linux qmail]#



【SSL対応版 インストール】

SSL対応版は、tcpserver-ssl としてインストールする。

* tcpserver(SSL対応) のパス → /usr/local/bin/tcpserver-ssl

[user@linux qmail]$ wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz ←■ tcpserverダウンロード
[user@linux qmail]$ wget http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz ←■ tcpserverSSL対応パッチダウンロード
[user@linux qmail]$ wget http://www.qmail.org/rpms/patches/ucspi-tcp-0.88.errno.patch ←■ エラー対策patchダウンロード

[user@linux qmail]$ tar zxvf ucspi-tcp-0.88.tar.gz ←■ 展開する
[user@linux qmail]$ gunzip ucspi-tcp-ssl-20050405.patch.gz ←■ tcpserverSSL対応パッチ展開
[user@linux qmail]$ mv ucspi-tcp-ssl-20050405.patch ucspi-tcp-0.88 ←■ tcpserverSSL対応パッチをtcpserver展開先ディレクトリへ移動させる

[user@linux qmail]$ cd ucspi-tcp-0.88/ ←■ ディレクトリ移動

[user@linux ucspi-tcp-0.88]$ patch < ucspi-tcp-ssl-20050405.patch ←■ tcpserverSSL対応パッチ施行
patching file FILES
patching file Makefile

~ 中略 ~

patching file tcpserver.c
patching file who@.1

[user@linux ucspi-tcp-0.88]$ su - ←■ root権限になる

[root@linux ucspi-tcp-0.88]# make ←■ tcpserverコンパイル
( cat warn-auto.sh; \
echo 'main="$1"; shift'; \
echo exec "`head -1 conf-ld`" \
'-o "$main" "$main".o ${1+"$@"}' \
) > load

~ 中略 ~

nroff -man argv0.1 > argv0.0
nroff -man recordio.1 > recordio.0
[root@linux ucspi-tcp-0.88]#

[root@linux ucspi-tcp-0.88]# mv tcpserver tcpserver-ssl ←■ SSL用にファイル名を変更する

[root@linux ucspi-tcp-0.88]# /bin/cp tcpserver-ssl /usr/local/bin ←■ SSL対応tcpserverをコピーする
[root@linux ucspi-tcp-0.88]#


【サーバ証明書作成 】

※ 応答するメールサーバ名はメールクライアントで設定するメールサーバー名と同じものを指定する

[root@linux ~]# cd ucspi-tcp-0.88 ←■ ディレクトリ移動
[root@linux ucspi-tcp-0.88]# make cert ←■ サーバ証明書作成
openssl req -new -x509 -nodes \
-out cert.pem -days 366 \
-keyout cert.pem
Generating a 1024 bit RSA private key
....++++++
.++++++
writing new private key to 'cert.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP ←■ サーバの所在地(国名)応答
State or Province Name (full name) [Berkshire]:Osaka ←■ サーバの所在地(都道府県名)応答
Locality Name (eg, city) [Newbury]:Osaka ←■ サーバの所在地(市区町村名)応答
Organization Name (eg, company) [My Company Ltd]:example.jp ←■ サーバ名応答(何でも良い)
Organizational Unit Name (eg, section) []: ←■ 空ENTER
Common Name (eg, your name or your server's hostname) []:mail.example.jp ←■ メールサーバ名応答 ※
Email Address []:postmaster@example.jp ←■ メールサーバ管理者アドレス応答
[root@linux ucspi-tcp-0.88]#
[root@linux ucspi-tcp-0.88]# cp cert.pem /var/qmail ←■ 作成したサーバ証明書をqmailインストールディレクトリへコピー

[root@linux ucspi-tcp-0.88]# chmod 600 /var/qmail/cert.pem ←■ サーバ証明書をroot以外参照禁止にする

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


----------------------------------------------------------------------------------------


qmail 起動

【旧SMTP の停止】

現在、起動しているSMTPサーバーの動作を停止させる。

■sendmail の場合

[root@linux ~]# /etc/rc.d/init.d/sendmail stop ←■ sendmail停止

[root@linux ~]# chkconfig --list sendmail ←■ 自動起動を確認
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@linux ~]# chkconfig sendmail off ←■ 自動起動解除
[root@linux ~]# chkconfig --list sendmail ←■ 自動起動設定を確認
sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off


■Postfix の場合

[root@linux ~]# /etc/rc.d/init.d/postfix stop ←■ Postfix停止
Shutting down postfix: [ OK ]

[root@linux ~]# chkconfig postfix off ←■ Postfix自動起動解除

[root@linux ~]# chkconfig --list postfix ←■ Postfix自動起動設定確認
postfix 0:off 1:off 2:off 3:off 4:off 5:off 6:off ←■ 全ランレベルのoffを確認


【sendmail コマンド置換え】

[root@linux ~]# chmod 0 /usr/lib/sendmail ←■ 旧sendmailコマンド無効化
[root@linux ~]# chmod 0 /usr/sbin/sendmail ←■ 旧sendmailコマンド無効化

[root@linux ~]# mv /usr/lib/sendmail /usr/lib/sendmail.org ←■ 旧sendmailコマンドをリネーム
[root@linux ~]# mv /usr/sbin/sendmail /usr/sbin/sendmail.org ←■ 旧sendmailコマンドをリネーム

[root@linux ~]# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail ←■ sendmailコマンドをqmailに置換え
[root@linux ~]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail ←■ sendmailコマンドをqmailに置換え


【Maildirへの移行】

[root@linux ~]# sed -i 's/Mailbox/Maildir\//g' /var/qmail/rc

[root@linux ~]# vi /var/qmail/rc ←■ /var/qmail/rc を直接編集する場合
qmail-start ./Mailbox splogger qmail ※ コメントアウトにしないこと
↓ 変更する
qmail-start ./Maildir/ splogger qmail


【起動スクリプト作成・設定】

* 起動スクリプト設定例↓
  http://tech.hitsug.net/?CentOS%2Fqmail%2F%E8%B5%B7%E5%8B%95%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%20%E8%A8%AD%E5%AE%9A%E4%BE%8B#va7ccd4f

[root@linux ~]# vi /etc/rc.d/init.d/qmail ←■ qmail起動スクリプト作成
[root@linux ~]# ※ 内容をコピーして保存する

[root@linux ~]# chmod +x /etc/rc.d/init.d/qmail ←■ qmail起動スクリプトへ実行権限付加

[root@linux ~]# /etc/rc.d/init.d/qmail start ←■ qmail起動
Starting qmail

[root@linux ~]# chkconfig qmail --add ←■ qmailをchkconfigへ追加

[root@linux ~]# chkconfig qmail on ←■ qmail自動起動設定

[root@linux ~]# chkconfig --list qmail ←■ qmail自動起動設定確認
qmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off ←■ ランレベル2~5のonを確認


qmail 起動

【起動】

[root@linux ~]# /etc/rc.d/init.d/qmail start


【停止】

[root@linux ~]# /etc/rc.d/init.d/qmail stop


【再起動】

[root@linux ~]# /etc/rc.d/init.d/qmail restart


【状態確認】

[root@linux ~]# /etc/rc.d/init.d/qmail status


------------------------------------------------------------------------------------------

qmailadmin関連ダウンロード

[user@linux qmail]$ wget http://nchc.dl.sourceforge.net/sourceforge/qmailadmin/qmailadmin-1.2.1.tar.gz
[user@linux qmail]$ wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz
[user@linux qmail]$ wget http://cr.yp.to/software/ezmlm-0.53.tar.gz
[user@linux qmail]$ wget http://www.ezmlm.org/archive/6.0.1/ezmlm-idx-6.0.1.tar.gz


autorespond は、qmail の Vacation(自動応答)ツールです。

【autorespond インストール】

autorespond 最新版確認 → http://www.inter7.com/index.php?page=development

[root@linux ~]# wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz ←■ autorespond ダウンロード
[root@linux ~]# tar zxvf autorespond-2.0.5.tar.gz ←■ autorespond 展開

[root@linux ~]# cd autorespond-2.0.5 ←■ autorespond 展開先ディレクトリへ移動

[root@linux autorespond-2.0.5]# vi autorespond.c ←■ autorespond.c 編集

static char *binqqargs[2] = { "bin/qmail-queue", 0 };
↓■ 変更 103行目辺り
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" ); ←■ 一行追加 265行目辺り

mfp = fopen( msg, "rb" );

:wq ←■ 保存して閉じる
[root@linux autorespond-2.0.5]#

[root@linux ~]# make && make install ←■ autorespond インストール
gcc -O2 -Wall -g autorespond.c -o autorespond
install -d /usr/bin /usr/share/man/man1
install autorespond /usr/bin
install autorespond.1 /usr/share/man/man1

[root@linux autorespond-2.0.5]# cd ../ ←■ autorespond 展開先ディレクトリを抜ける

[root@linux ~]# rm -f autorespond-2.0.5* ←■ 今後不要な場合、ダウンロードした autorespond 削除

[root@linux autorespond-2.0.5]# vi /var/qmail/bin/qmail-queue.iso-2022-jp ←■ autorespond 返信メール日本語化スクリプト作成
#!/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}

:wq ←■ 保存して閉じる
[root@linux ~]#

[root@linux ~]# chmod 711 /var/qmail/bin/qmail-queue.iso-2022-jp ←■ autorespond 返信メール日本語化スクリプトパーミッション変更

[root@centos ~]# chown vpopmail. /var/qmail/bin/qmail-queue.iso-2022-jp ←■ autorespond 返信メール日本語化スクリプト所有者変更



ezmlm は、メーリングリスト管理ツールです。

【ezmlm + ezmlm-idx インストール】

* ezmlm 最新版確認 → http://cr.yp.to/ezmlm.html
* ezmlm-idx 最新版確認 → http://www.ezmlm.org/

[root@linux ~]# wget http://cr.yp.to/software/ezmlm-0.53.tar.gz ←■ ezmlm ダウンロード
[root@linux ~]# wget http://www.ezmlm.org/archive/6.0.1/ezmlm-idx-6.0.1.tar.gz ←■ ezmlm-idx ダウンロード

[root@linux ~]# tar zxvf ezmlm-0.53.tar.gz ←■ ezmlm 展開
[root@linux ~]# tar zxvf ezmlm-idx-6.0.1.tar.gz ←■ ezmlm-idx 展開

[root@linux ~]# cd ezmlm-0.53 ←■ ezmlm 展開先ディレクトリへ移動

[root@linux ~]# /bin/cp -r ezmlm-idx-6.0.1/* ezmlm-0.53 ←■ ezmlm-idx 展開先ディレクトリ内全ファイルを ezmlm 展開先ディレクトリへコピー

[root@linux ezmlm-0.53]# patch < idx.patch ←■ ezmlm-idx パッチ施行
patching file auto-str.c
patching file case_startb.c
~ 中略 ~
patching file surf.c
patching file surfpcs.c

[root@linux ezmlm-0.53]# echo ja > conf-lang ←■ メーリングリストシステムからのメールの日本語化
[root@linux ezmlm-0.53]# echo c:::644:/ja/:charset:lang/ja/charset >> ETC ←■ メーリングリストシステムからのメールの日本語化

[root@linux ezmlm-0.53]# make && make setup ←■ インストール

[root@linux ezmlm-0.53]# cd ←■ ezmlm展開先ディレクトリを抜ける
[root@linux ~]# rm -rf ezmlm-0.53 ezmlm-idx-6.0.1 ←■ 今後必要無い場合、ezmlm ezmlm-idx 展開先ディレクトリ削除
[root@linux ~]# rm -f ezmlm-0.53.tar.gz ezmlm-idx-5.1.1.tar.gz ←■ 今後必要無い場合、ezmlm.tar.gz ezmlm-idx.tar.gz 削除

ezmlm のパス → /usr/local/bin/ezmlm


【qmailadmin インストール】

qmailadmin 最新版確認 → http://sourceforge.net/project/showfiles.php?group_id=6691&package_id=6782

[root@linux ~]# wget http://jaist.dl.sourceforge.net/sourceforge/qmailadmin/qmailadmin-1.2.11.tar.gz ←■ qmailadminダウンロード

[root@linux ~]# tar zxvf qmailadmin-1.2.11.tar.gz ←■ qmailadmin 展開

[root@linux ~]# cd qmailadmin-1.2.11 ←■ qmailadmin 展開先ディレクトリへ移動

[root@linux qmailadmin-1.2.11]# vi template.c ←■ ログインページでの qmailadmin vpopmail のバージョン非表示化
+----------------------------------------------------------------------------------------------------
| /* show version number */
| case 'V':
| printf("%s %s
",
| QA_PACKAGE, QA_VERSION);
| printf("%s %s
",
| PACKAGE, VERSION);
| break;
+----------------------------------------------------------------------------------------------------
   ↓■ 変更 447行目辺り
+----------------------------------------------------------------------------------------------------
| /* show version number */
| case 'V':
| printf("%s
", ←■ ' %s' を除去
| QA_PACKAGE); ←■ ', QA_VERSION' を除去
| printf("%s
", ←■ ' %s' を除去
| PACKAGE); ←■ ', QA_VERSION' を除去
| break;
+----------------------------------------------------------------------------------------------------

[root@linux qmailadmin-1.2.11]# ./configure \
--enable-htmldir=/home/vpopmail/public_html \
--enable-cgibindir=/home/vpopmail/public_html/cgi-bin \
--enable-qmaildir=/var/qmail \
--enable-imagedir=/home/vpopmail/public_html/images \
--enable-imageurl=/images \
--enable-ezmlm-mysql=n \
--enable-help

[root@linux qmailadmin-1.2.11]# make
[root@linux qmailadmin-1.2.11]# make install-strip ←■ qmailadmin インストール

[root@linux qmailadmin-1.2.11]# cd ←■ qmailadmin 展開先ディレクトリを抜ける

[root@linux ~]# rm -rf qmailadmin-1.2.11* ←■ 今後不要な場合、qmailadmin 展開先ディレクトリ、ダウンロードしたqmailadmin 削除


【qmailadmin-help インストール】

qmailadmin-help 最新版確認 → http://sourceforge.net/project/showfiles.php?group_id=6691&package_id=85257

[root@linux ~]# wget http://jaist.dl.sourceforge.net/sourceforge/qmailadmin/qmailadmin-help-1.0.8.tar.gz ←■ qmailadmin-help ダウンロード

[root@linux ~]# tar zxvf qmailadmin-help-1.0.8.tar.gz ←■ qmailadmin-help 展開

[root@linux ~]# mkdir /home/vpopmail/public_html/images/help ←■ qmailadmin-help 格納先ディレクトリ作成

[root@linux ~]# cp -rp qmailadmin-help-1.0.8/* /home/vpopmail/public_html/images/help ←■ qmailadmin-help を上記ディレクトリへコピー

[root@linux ~]# rm -rf qmailadmin-help-1.0.8* ←■ 今後不要な場合、qmailadmin-help 展開先ディレクトリ、ダウンロードしたqmailadmin-help 削除


【qmailadmin パーミッション設定】

[root@linux ~]# chown -R vpopmail:vchkpw /home/vpopmail/public_html
[root@linux ~]# chmod +s /home/vpopmail/public_html/cgi-bin/qmailadmin


Apache 設定

【設定ファイル(httpd.conf)の編集 】

VirtualHost用の別ファイルを設置している場合は、/etc/httpd/conf.d/virtualhost.conf 等に記述しても良い

[root@linux ~]# vi /etc/httpd/conf/httpd.conf ←■ 設定ファイル編集

DocumentRoot /home/vpopmail/public_html
ServerName example.jp ←■ 適宜、使用するドメインに書き換える

SetHandler cgi-script
AllowOverride None


# ▼ https forward # ←■ https でのアクセス設定をしている場合

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/cgi-bin/qmailadmin(.*)$ https://%{HTTP_HOST}/cgi-bin/qmailadmin [L,R]

# ▲ https forward #



# ▼ SSL用 VirtualHost 設定 # ←■ httpsでアクセスする場合のVirtualHost設定

DocumentRoot /home/vpopmail/public_html
ServerName example.jp

SetHandler cgi-script
AllowOverride None


# ▲ SSL用 VirtualHost 設定 #

:wq ←■ 保存して閉じる

[root@linux ~]# /etc/rc.d/init.d/httpd reload ←■ Apache設定反映
httpd を再読み込み中: [ OK ]
[root@linux ~]#