qmail 構築

qmail+vpopmail+SpamAssassin+clamAV構築

  • 2014年9月24日
  • 2017年4月20日
  • 日常
  • 956view

qmailインストール

qmailについて

シンプルかつ高速高セキュアと謳われたqmail。
そのためDoS以外のセキュリティホールが見つからず、セキュリティホールを見つけると500ドルを貰える。
なお、未だセキュリティホールとして認定された事はありません。

現在の最新バージョンは1998年6月15日にリリースされた1.03。
著者の本体の開発は終了しており、非公式パッチをいくつも当てて構築する為
複雑で敷居は高い気がします。

現在はpostfixが主流ですが、根強いファンや
当時建てられたメールサーバーが数多く稼働しています。

 

 

 

━─━─━─━─━─━─━─━─━─━─━─━─━
Postfixなどメールサーバの構築を有償で承ります。
SMTP,POP3,IMAP,SSL,s25R対応
スパム,ウィルスにもフィルター対応
WEBブラウザでのアカウント管理対応

>>お問い合わせ

━─━─━─━─━─━─━─━─━─━─━─━─━

サマリー

今回はSMTP認証+SSL+POP3環境を作ります。

1. qmail(メール本体)
2. vpopmail(バーチャルドメイン実現)
3. autorespond(自動応答機能)
4. ezmlm-idx(メーリングリスト機能)
5. Qmailadmin(GUI管理)
6. clamAV(ウィルス検知/除去)
7. QmailScanner(ClamAV+SpamAssassin+qmail連携)
8. SpamAssassin(スパムフィルタ)

qmailのインストール

[bash] # mkdir /var/qmail
[/bash]

nofilesグループ作成

[bash] # groupadd nofiles
[/bash]

エイリアスユーザー作成

[bash] # useradd -g nofiles -s /sbin/nologin alias -m -d /var/qmail/alias -k /dev/null
[/bash]

qmaildユーザ作成

[bash] # useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaild
[/bash]

qmaillユーザ作成

[bash] # useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmaill
[/bash]

qmailpユーザ作成

[bash] # useradd -g nofiles -d /var/qmail -s /sbin/nologin -M qmailp
[/bash]

qmailグループ作成

[bash] # groupadd qmail
[/bash]

qmailqユーザー作成

[bash] # useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailq
[/bash]

qmailrユーザー作成

[bash] # useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmailr
[/bash]

qmailsユーザー作成

[bash] # useradd -g qmail -d /var/qmail -s /sbin/nologin -M qmails
[/bash]

【qmail本体とパッチのダウンロード】

[bash] # cd /usr/local/src
[/bash]

本体

[bash] # wget http://tomclegg.net/qmail/qmail-1.03.tar.gz
[/bash]

SMTP-Auth対応パッチ

[bash] # wget http://tomclegg.net/qmail/qmail-smtpd-auth-0.31.tar.gz
[/bash]

日本標準時間対応パッチ

[bash] # wget http://www.itheart.com/phpgw/qmail-date-localtime.patch
[/bash]

不正中継拒否パッチ

[bash] # wget http://www.qmail.org/qmail-smtpd-relay-reject
[/bash]

エラー対策パッチ

[bash] # wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch
[/bash]

外部SMTP-authパッチ

[bash] # wget http://tomclegg.net/qmail/qmail-remote-auth.patch
[/bash]

qmail展開

[bash] # tar zxvf qmail-1.03.tar.gz
[/bash]

SMTP-Authパッチ展開

[bash] # tar zxvf qmail-smtpd-auth-0.31.tar.gz

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
[/bash]

パッチを本体に移動

[bash] # mv qmail-smtpd-auth-0.31/* ./qmail-1.03/
[/bash]

qmailに移動

[bash] # cd qmail-1.03
[/bash]

日本時間対応パッチを当てます

[bash] # patch -p1 < ../qmail-date-localtime.patch

patching file date822fmt.c
[/bash]

SMTP-Authパッチを当てます

[bash] qmail-1.03]# patch < auth.patch
patching file Makefile
patching file TARGETS
patching file qmail-smtpd.8
patching file qmail-smtpd.c
[/bash]

外部SMTP-Authパッチを当てます

[bash] qmail-1.03]# patch < ../qmail-remote-auth.patch

patching file qmail-remote.c
patching file Makefile
[/bash]

不正中継拒否パッチを当てます

[bash] # patch < ../qmail-smtpd-relay-reject
patching file qmail-smtpd.c
Hunk #1 succeeded at 56 (offset 3 lines).
Hunk #2 succeeded at 229 (offset 12 lines).
Hunk #3 succeeded at 286 (offset 20 lines).
[/bash]

エラー対策パッチを当てます。

[bash] qmail-1.03]# patch < ../qmail-1.03.errno.patch
patching file cdb_seek.c
patching file dns.c
patching file error.3
patching file error.h
[/bash]

インストール

[bash] qmail-1.03]# make setup check
[/bash]

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

configure

[bash] qmail-1.03]# ./config-fast hostname

Your fully qualified host name is hoge.net.
Putting hoge.net into control/me…
Putting hoge.net into control/defaultdomain…
Putting hoge.net into control/plusdomain…
Putting hoge.net into control/locals…
Putting hoge.net into control/rcpthosts…
Now qmail will refuse to accept SMTP messages except to hoge.net.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
[/bash]

Cシェルインストール済みか確認

[bash] # yum list | grep tcsh
tcsh.x86_64 6.17-24.el6 @anaconda-CentOS-201311272149.x86_64/6.5
[/bash]

******************************************************************
【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 用 ユーザ・グループ作成 】

[bash] # groupadd -g 91 vchkpw

# useradd -g vchkpw vpopmail -s /sbin/nologin -m -k /dev/null

# useradd -g vchkpw -u 91 vpopmail -s /sbin/nologin -m -k /dev/null
[/bash]

パーミッション変更

[bash] # chmod 755 /home/vpopmail
[/bash]

【リレー許可DBの作成 】

[bash] # mkdir -p /home/vpopmail/etc/
[/bash] [bash] # vi /home/vpopmail/etc/tcp.smtp

127.:allow,RELAYCLIENT=””
:allow
[/bash]

他の例***********************

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

tcpserverに読ませるcdbの作成

[bash] # tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
[/bash] [bash] # chown -R vpopmail. /home/vpopmail/etc
[/bash]

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

vpopmailダウンロード

[bash] # cd /usr/local/src
[/bash] [bash] # wget http://www.ahref.org/tech/image/vpopmail-5.4.25.tar.gz

vpopmail-5.4.25.tar.gz’ へ保存完了 [504184/504184] [/bash]

vpopmail展開

[bash] # tar zxvf vpopmail-5.4.25.tar.gz
[/bash] [bash] # cd vpopmail-5.4.25
[/bash]

※メールサーバでウィルススパムチェック導入する予定の場合のみ
ユーザー追加時に自動でスパムメール用メールボックスを作成

vpopmailの生成ディレクトリなどの設定。

[bash] vpopmail-5.4.25]# vi 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”};

[/bash] [bash] vpopmail-5.4.25]# vi vchkpw.c

hmac_md5( (unsigned char *) challenge, strlen(challenge), (unsigned char *) password, strlen(password), digest);

↓2か所変更

hmac_md5( (unsigned char *) response, strlen(response), (unsigned char *) password, strlen(password), digest);

return(strcmp(digascii,response));

↓変更

return(strcmp(digascii,challenge));
[/bash] [bash] vpopmail-5.4.25]# ./configure –enable-qmail-ext=n –enable-logging=y

vpopmail 5.4.25
Current settings
—————————————

vpopmail directory = /home/vpopmail
domains directory = /home/vpopmail/domains
uid = 91
gid = 91
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)
[/bash]

vpopmailインストールします。

[bash] vpopmail-5.4.25]# make && make install-strip

/usr/bin/install -c -o vpopmail -m 711 -g vchkpw -s ‘vmoddomlimits’ ‘/home/vpopmail/bin/vmoddomlimits’
/usr/bin/install -c -o vpopmail -m 711 -g vchkpw -s ‘vchangepw’ ‘/home/vpopmail/bin/vchangepw’
/usr/bin/install -c -o vpopmail -m 711 -g vchkpw -s ‘dotqmail2valias’ ‘/home/vpopmail/bin/dotqmail2valias’
/usr/bin/install -c -o vpopmail -m 711 -g vchkpw -s ‘vpopmaild’ ‘/home/vpopmail/bin/vpopmaild’
make[3]: ディレクトリ /usr/local/src/vpopmail-5.4.25' から出ます
make[2]: ディレクトリ
/usr/local/src/vpopmail-5.4.25′ から出ます
make[1]: ディレクトリ /usr/local/src/vpopmail-5.4.25' から出ます
[/bash]

所有権、パーミッションの設定を行います。

[bash] # chown root. /home/vpopmail/bin/vchkpw

# chmod 4755 /home/vpopmail/bin/vchkpw
[/bash]

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

[bash] -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
[/bash]

vpopmailにドメインを追加する場合

サブもメインも追加するコマンドは同じです。

[bash] # /home/vpopmail/bin/vadddomain メインドメイン パスワード
[/bash]


# /home/vpopmail/bin/vadddomain hoge.net 123123999

○バーチャルドメインを追加する場合

[bash] # /home/vpopmail/bin/vadddomain サブドメイン パスワード
[/bash]


# /home/vpopmail/bin/vadddomain subdomain.net 5555555

○削除する場合

[bash] # /home/vpopmail/bin/vdeldomain 削除したいドメイン名
[/bash]

○メールアカウント追加

[bash] # /home/vpopmail/bin/vadduser アカウント名@追加済みのドメイン名 パスワード
[/bash]

○メールアカウント削除

[bash] # /home/vpopmail/bin/vdeluser アカウント名@追加済みのドメイン名
[/bash]

○パスワード変更

[bash] # /home/vpopmail/bin/vpasswd アカウント名@追加済みのドメイン名
[/bash]

○ドメイン情報確認コマンド(全体のおおざっぱな情報)

[bash] /home/vpopmail/bin/vdominfo
[/bash]

○ドメイン情報確認(個別で詳細情報)

[bash] # /home/vpopmail/bin/vuserinfo -D ドメイン
[/bash]

■ vpopmail全体ユーザー設定ファイル編集する場合

# 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 メールアドレス 容量等

SSL対応版 tcpserverインストール

tcpserverとエラー対応パッチのダウンロードを行います。

[bash] # cd /usr/local/src

# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

# wget http://www.qmail.org/rpms/patches/ucspi-tcp-0.88.errno.patch
[/bash]

tcpserver展開する

[bash] src]# tar zxvf ucspi-tcp-0.88.tar.gz
[/bash]

**********************************************
※ucspi-tcp-0.88.tar.gzの展開先でlsしてみて
入ってなければ入れるようにしてください。

tcpserverSSL対応パッチ
# wget http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz

SSL対応パッチ解凍
src]# gunzip ucspi-tcp-ssl-20050405.patch.gz

# mv ucspi-tcp-ssl-20050405.patch ucspi-tcp-0.88

src]# cd ucspi-tcp-0.88/

SSLパッチ適応
ucspi-tcp-0.88]# patch < ucspi-tcp-ssl-20050405.patch

patching file FILES
patching file Makefile
patching file TARGETS
The next patch would create the file addcr.1,

***********************************************

tcpserver展開ディレクトリに移動します。

[bash] src]# cd ucspi-tcp-0.88/
[/bash]

エラー対策

[bash] ucspi-tcp-0.88]# patch < ../ucspi-tcp-0.88.errno.patch

patching file error.h
[/bash]

パッチの確認

[bash] ucspi-tcp-0.88]# vi error.h

#include <errno.h>
[/bash]

となってれば大丈夫。

[bash] ucspi-tcp-0.88]# make
[/bash]

ssl対応とわかるようにtcpserver-sslとリネームします。

[bash] ucspi-tcp-0.88]# mv tcpserver tcpserver-ssl
[/bash]

tcpserver-sslをコピーします。

[bash] ucspi-tcp-0.88]# cp tcpserver-ssl /usr/local/bin
[/bash]

【サーバ証明書作成 】

[bash] # cd /usr/local/src/ucspi-tcp-0.88
[/bash]

SSLパッチ適応

[bash] ucspi-tcp-0.88]# patch < ucspi-tcp-ssl-20050405.patch
[/bash]

サーバー証明書を発行します。

[bash] ucspi-tcp-0.88]# make cert

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) [XX]:JP←国名
State or Province Name (full name) []:Tokyo←県名
Locality Name (eg, city) [Default City]:Akihabara←都市名
Organization Name (eg, company) [Default Company Ltd]:hoge.net←ドメイン
Organizational Unit Name (eg, section) []:←空エンター
Common Name (eg, your name or your server's hostname) []:hoge.net←メールサーバ名応答
Email Address []:postmaster@hoge.net←管理者宛メールアドレス応答
[/bash]

qmailiインストール先に証明書を移動

[bash] ucspi-tcp-0.88]# cp cert.pem /var/qmail
[/bash]

rootでしか証明書を参照出来ないようにします。

[bash] ucspi-tcp-0.88]# chmod 600 /var/qmail/cert.pem
[/bash]

展開先ディレクトリを出る

[bash] ucspi-tcp-0.88]# cd
[root@ ~]#
[/bash]

【旧SMTP の停止】

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

■sendmail の場合

[bash] [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
[/bash]

【sendmail コマンド置換え】

[bash] [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に置換え
[/bash]

■Postfix の場合

[bash] [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を確認
[/bash]

【Maildirへの移行】

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

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

* 起動スクリプト設定例↓
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

起動スクリプト作成(qmail + vpopmail / SMTP認証 用)

[bash] # vi /etc/rc.d/init.d/qmail

#!/bin/bash
#
# qmail: /var/qmail
#
# chkconfig: 2345 80 30
# description: qmail start/stop script

# Source function library.
. /etc/rc.d/init.d/functions

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

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

start() {
# Start daemons.
if [ -z $(/sbin/pidof qmail-send) ]; then
echo -n "Starting qmail"

# qmail
csh -cf '/var/qmail/rc &' 2>&1 > /dev/null

# SMTP
tcpserver -qv -l0 -HR -u
id -u vpopmail -g id -g vpopmail 0 smtp \
qmail-smtpd
hostname 2>&1 | splogger smtp 3 &

# SMTP OP25B Submission
tcpserver -qv -l0 -HR -u
id -u vpopmail -g id -g vpopmail -x /home/vpopmail/etc/tcp.smtp.cdb 0 submission \
qmail-smtpd
hostname /home/vpopmail/bin/vchkpw /bin/true 2>&1 | splogger smtp 3 &

#----- ▼ SMTPS導入の場合 -----#
# SMTPS
tcpserver-ssl -qvs -l0 -HR -u
id -u vpopmail -g id -g vpopmail -n /var/qmail/cert.pem -x /home/vpopmail/etc/tcp.smtp.cdb 0 smtps \
qmail-smtpd
hostname /home/vpopmail/bin/vchkpw /bin/true 2>&1 | splogger smtps 3 &
#----- ▲ SMTPS導入の場合 -----#

# POP3
tcpserver -qvHR -u
id -u vpopmail -g id -g vpopmail 0 pop3 \
qmail-popup
hostname /home/vpopmail/bin/vchkpw qmail-pop3d Maildir 2>&1 | splogger pop3 3 &

#----- ▼ POP3S導入の場合 -----#
# POP3S
tcpserver-ssl -qvsHR -u
id -u vpopmail -g id -g vpopmail -n /var/qmail/cert.pem 0 pop3s \
qmail-popup
hostname /home/vpopmail/bin/vchkpw qmail-pop3d Maildir 2>&1 | splogger pop3s 3 &
#----- ▲ POP3S導入の場合 -----#

RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/qmail
return $RETVAL
else
echo "qmail is already started"
fi
}

stop() {
# Stop daemons.
if [ ! -z $(/sbin/pidof qmail-send) ]; then
echo -n "Shutting down qmail"
/bin/kill $(/sbin/pidof tcpserver)
/bin/kill $(/sbin/pidof qmail-send)
until [ -z $(/sbin/pidof qmail-send) ] && [ -z $(/sbin/pidof tcpserver) ]; do :; done
echo
rm -f /var/lock/subsys/qmail
else
echo "qmail is not running"
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
if [ ! -z $(/sbin/pidof qmail-send) ] ; then
echo -n "qamil (pid"
echo -n "
/sbin/pidof qmail-send"
echo -n "
/sbin/pidof tcpserver"
echo ") is running..."
else
echo "qmail is stoped"
fi
;;
*)
echo "Usage: qmail {start|stop|restart|status}"
exit 1
esac

exit 0

[/bash]

qmail起動スクリプトへ実行権限付加

[bash] # chmod +x /etc/rc.d/init.d/qmail
[/bash]

qmail起動します。

[bash] # /etc/rc.d/init.d/qmail start
Starting qmail
[/bash]

プロセス確認します。

[bash] # /etc/rc.d/init.d/qmail status
qamil (pid 31565 31578 31569 31566) is running...
[/bash]

qmailをchkconfigへ追加

[bash] # chkconfig qmail --add

自動起動設定
# chkconfig qmail on

# chkconfig --list qmail
qmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[/bash]

iptablesの設定

[bash] # vi /etc/sysconfig/iptables

#ループバックの許可
-A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
-A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

#pop3,imap,imaps
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT

#qmail
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
-A INPUT -p tcp -m tcp --dport smtp -j ACCEPT
[/bash]

設定の反映を行います。

[bash] # service iptables restart
[/bash]

fastforwardインストール(/etc/aliaseを使用できるようにするモジュール)

最新版チェック http://cr.yp.to/fastforward.html

[bash] # chmod 0 /usr/lib/sendmail←旧sendmailコマンド無効化

# chmod 0 /usr/sbin/sendmail←旧sendmailコマンド無効化

# mv /usr/lib/sendmail /usr/lib/sendmail.bak←旧sendmailコマンドをリネーム

# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak←旧sendmailコマンドをリネーム

# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail←sendmailコマンドをqmailに置換え

# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail←sendmailコマンドをqmailに置換え

# chmod +x /usr/sbin/sendmail

# chmod +x /usr/lib/sendmail
[/bash] [bash] # vi /etc/aliases

# trap decode to catch security attacks
#decode: root←行頭に#をつけて無効化

root: kanrisha@gmail.com←root宛を受け取りたいアドレスを追加します。
[/bash]

お約束のフォルダに移動します。

[bash] # cd /usr/local/src/
[/bash] [bash] src]# wget http://cr.yp.to/software/fastforward-0.51.tar.gz

fastforward-0.51.tar.gz’ へ保存完了 [40659/40659] [/bash] [bash] src]# tar zxvf fastforward-0.51.tar.gz
[/bash] [bash] # cd fastforward-0.51
[/bash] [bash] fastforward-0.51]# vi error.h

extern int errno;

↓変更します

#include<errno.h>
[/bash]

コンパイル

[bash] fastforward-0.51]# make setup check

error.a open.a str.a
./install
./compile instcheck.c
./load instcheck hier.o auto_qmail.o strerr.a substdio.a \
error.a str.a
./instcheck
[/bash]

newaliasesコマンドを無効化

[bash] # chmod 0 /usr/bin/newaliases
[/bash]

旧newaliaseコマンドをリネームしてバックアップ

[bash] # mv /usr/bin/newaliases /usr/bin/newaliases.bak
[/bash]

newaliasesコマンドをfastforwardに置換え

[bash] # ln -s /var/qmail/bin/newaliases /usr/bin/newaliases
[/bash]

実行権限付与

[bash] # chmod +x /var/qmail/bin/newaliases
[/bash]

/etc/aliasesのcdb形式データベース作成

[bash] # newaliases
[/bash]

/etc/aliasesのcdb形式データベース作成確認

[bash] # ll /etc/aliases.cdb

-rw-r–r– 1 root root 5853 9月 20 23:56 2014 /etc/aliases.cdb
[/bash]

/etc/aliases.cdbをqmailが参照するように設定

[bash] # echo “|/var/qmail/bin/fastforward -p -d /etc/aliases.cdb” > /var/qmail/alias/.qmail-default
[/bash]

これで

[bash] # mail root
[/bash]

とやって指定したアドレスに受け取れない場合は

[bash] # vi /var/qmail/alias/.qmail-root

&kanrisha@gmail.com
[/bash] [bash] # vi /var/qmail/alias/.qmail-postmaster

&kanrisha@gmail.com
[/bash]

のように『&』をつけて転送先のアドレスを書きます。

【重要】/var/qmail/control/localsファイル

※きちんとかかないと/var/qmail/alias/.qmail-root
などのaliasが作動しない。

localhost
MXレコードに書いたドメイン
.MXレコードに書いたドメイン

[bash] # vi /var/qmail/control/locals

localhost
hoge.net
.hoge.net
subdomain.com
.subdomain.com
[/bash]

再起動で反映させます。

[bash] # service qmail restart
[/bash] [bash] # ls -la
合計 20
drwxr-sr-x 2 alias qmail 4096 9月 22 03:45 2014 .
drwxr-xr-x 14 root qmail 4096 9月 22 00:48 2014 ..
-rw-r–r– 1 root qmail 51 9月 22 02:28 2014 .qmail-default
-rw-r–r– 1 root qmail 25 9月 22 03:45 2014 .qmail-postmaster
-rw-r–r– 1 root qmail 25 9月 22 03:42 2014 .qmail-root
[/bash]

これでroot宛やpostmaster宛のalias転送設定が完了ですー☆

**********************************************************

【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からのメールが届かない。
************************************************************

トラブルメモ tcpserver: fatal: unable to bind: address already used

■ トラブルメモ

エラー。

[bash] Sep 21 01:47:10 hoge.net qmail: 1411231630.676604 status: exiting
Sep 21 01:47:10 hoge.net smtp: 1411231630.723941 tcpserver: fatal: unable to bind: address already used
Sep 21 01:47:10 hoge.net qmail: 1411231630.725580 status: local 0/10 remote 0/20
[/bash] [bash] # netstat -anp |grep LIST

tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 7545/dovecot
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 3621/vsftpd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1189/master
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 7545/dovecot
tcp 0 0 0.0.0.0:55522 0.0.0.0:* LISTEN 3517/sshd
tcp 0 0 153.xxx.yyy.39:50023 0.0.0.0:* LISTEN 7642/vsftpd
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2339/mysqld
tcp 0 0 :::143 :::* LISTEN 7545/dovecot
tcp 0 0 :::80 :::* LISTEN 1646/httpd
tcp 0 0 ::1:25 :::* LISTEN 1189/master
tcp 0 0 :::993 :::* LISTEN 7545/dovecot
[/bash]

masterの25番はpostfixのプロセス。
postfixのプロセスが残っているようなので

[bash] # ps aux | grep master

root 1189 0.0 0.1 81272 3420 ? Ss Sep20 0:00 /usr/libexec/postfix/master
root 7920 0.0 0.0 107468 924 pts/0 S+ 01:50 0:00 grep master
[/bash]

プロセスをkillしましょう☆

[bash] # kill 1189
[/bash]

autorespond+ezmlm+qmailadmin

【autorespond 自動応答機能追加】

お約束のディレクトリに移動します。

[bash] # cd /usr/local/src
[/bash]

自動応答ツールautorespondダウンロード

[bash] # wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz
[/bash]

autorespond展開

[bash] # tar zxvf autorespond-2.0.5.tar.gz
[/bash]

展開ディレクトリに移動します。

[bash] # cd autorespond-2.0.5
[/bash]

編集します。

[bash] autorespond-2.0.5]# vi autorespond.c

103行目付近

static char *binqqargs[2] = { “bin/qmail-queue”, 0 };

↓変更

static char *binqqargs[2] = { “bin/qmail-queue.iso-2022-jp”, 0 };

265行目付近

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” ); ←1行追加します。

mfp = fopen( msg, “rb” );
[/bash]

autorespondインストールします。

[bash] autorespond-2.0.5]# make && make install

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
[/bash]

展開先ディレクトリを抜けます。

[bash] autorespond-2.0.5]# cd
[/bash]

返信メール日本語化スクリプト作成

[bash] ~]# 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}
[/bash]

パーミッション711付与

[bash] # chmod 711 /var/qmail/bin/qmail-queue.iso-2022-jp
[/bash]

所有者設定

[bash] # chown vpopmail. /var/qmail/bin/qmail-queue.iso-2022-jp
[/bash]

【ezmlm-idx インストール】

メーリングリスト機能を追加します。

他にezmlmもインストールしなければいけなかったが
本家著作者がパブリックドメインに移管したので
パッチファイル側に本体が入ってezmlm-idxだけインストールすればよくなりました。

メーリングリスト管理プログラム拡張機能版ezmlm-idxダウンロード 最新版(http://untroubled.org/ezmlm/archive/6.0.1/)

[bash] # wget http://untroubled.org/ezmlm/archive/7.1.1/ezmlm-idx-7.1.1.tar.gz
[/bash]

コンパイラのライブラリをインストール

[bash] # yum install gcc gcc-c++ make patch pam-devel openssl

Running Transaction
Installing : pam-devel-1.1.1-17.el6.x86_64 1/1
Verifying : pam-devel-1.1.1-17.el6.x86_64 1/1

Installed:
pam-devel.x86_64 0:1.1.1-17.el6
[/bash] [bash] # tar zxvf ezmlm-idx-7.1.1.tar.gz
[/bash] [bash] # cd ezmlm-idx-7.1.1
[/bash]

○日本語化対応

[bash] # echo ja > conf-lang

# echo c:::644:/ja/:charset:lang/ja/charset >> ETC
[/bash]

コンパイルします。

[bash] ezmlm-idx-7.1.1]# make

ezmlm-idx-7.1.1]# make man

ezmlm-idx-7.1.1]# make install
[/bash]

【qmailadminインストール】

最新版チェック
http://www.inter7.com/index.php?page=development

[bash] # cd /usr/local/src
[/bash]

qmailadmin本体ダウンロードします。

[bash] # wget http://jaist.dl.sourceforge.net/sourceforge/qmailadmin/qmailadmin-1.2.15.tar.gz
[/bash] [bash] src]# tar zxvf qmailadmin-1.2.15.tar.gz
[/bash]

展開ディレクトリへ移動します。

[bash] src]# cd qmailadmin-1.2.15
[/bash]

バージョンの非表示を行う。

[bash] qmailadmin-1.2.15]# vi template.c

/* show version number */
case ‘V’:
printf(“<a href=\”http://sourceforge.net/projects/qmailadmin/\”>%s</a> %s<BR>”,
QA_PACKAGE, QA_VERSION);
printf(“<a href=\”http://www.inter7.com/vpopmail/\”>%s</a> %s<BR>”,
PACKAGE, VERSION);
break;

↓変更

/* show version number */
case ‘V’:
printf(“%s”,QA_PACKAGE);
printf(“%s”,PACKAGE);
break;
[/bash]

configureを実行

[bash] # ./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

qmailadmin 1.2.15
Current settings
—————————————
cgi-bin dir = /home/vpopmail/public_html/cgi-bin
html dir = /home/vpopmail/public_html
image dir = /home/vpopmail/public_html/images
image URL = /images
template dir = /usr/local/share/qmailadmin
qmail dir = /var/qmail
vpopmail dir = /home/vpopmail
autorespond dir = /usr/bin
ezmlm dir = /usr/local/bin/ezmlm
ezmlm idx = yes
mysql for ezmlm = no
help = yes
modify quota = no
domain autofill = no
subhoge accounts = yes
trivial passwords = yes
modify spam check = no
[/bash]

コンパイル

[bash] qmailadmin-1.2.15]# make

mv -f .deps/dotqmail.Tpo .deps/dotqmail.Po
gcc -g -O2 -Wall -o qmailadmin qmailadmin.o alias.o autorespond.o forward.o mailinglist.o user.o util.o printh.o auth.o template.o command.o show.o cgi.o limits.o dotqmail.o -L/home/vpopmail/lib -lvpopmail -lcrypt -lcrypt
make[1]: ディレクトリ /usr/local/src/qmailadmin-1.2.15' から出ます
[/bash]

インストールを行います。

[bash] qmailadmin-1.2.15]# make install-strip

/bin/sh ./mkinstalldirs /home/vpopmail/public_html/images
mkdir /home/vpopmail/public_html/images
cp ./images/*.png /home/vpopmail/public_html/images
make[2]: ディレクトリ
/usr/local/src/qmailadmin-1.2.15′ から出ます
make[1]: ディレクトリ /usr/local/src/qmailadmin-1.2.15' から出ます
[/bash]

展開ディレクトリを出ます。

[bash] qmailadmin-1.2.15]# cd
[/bash]

【qmailadmin-help インストール】

ヘルプです。
必要な人はって程度のものです。

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

[bash] # cd /usr/local/src
[/bash]

ダウンロードします。

[bash] src]# wget http://jaist.dl.sourceforge.net/sourceforge/qmailadmin/qmailadmin-help-1.0.8.tar.gz
[/bash]

展開します。

[bash] src]# tar zxvf qmailadmin-help-1.0.8.tar.gz
[/bash]

専用ディレクトリ作成

[bash] # mkdir /home/vpopmail/public_html/images/help
[/bash]

ファイルをコピーして移します。

[bash] src]# cp -rp qmailadmin-help-1.0.8/* /home/vpopmail/public_html/images/help
[/bash]

パーミッション、所有権を設定します。

[bash] # chown -R vpopmail:vchkpw /home/vpopmail/public_html

# chmod +s /home/vpopmail/public_html/cgi-bin/qmailadmin
[/bash]

バーチャルホスト設定

[bash] # vi /etc/httpd/conf.d/virtualhost_qmailadmin.conf

<VirtualHost *:80>
ServerName hoge.net
ServerAdmin postmaster@hoge.net
DocumentRoot /home/vpopmail/public_html
ScriptAlias /cgi-bin/ "/home/vpopmail/public_html/cgi-bin/"
ErrorLog /var/log/httpd/vpopmail-error.log
CustomLog /var/log/httpd/vpopmail-access.log combined env=!nolog
<Directory "/home/vpopmail/public_html">
SetHandler cgi-script
# AllowOverride None
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.
Allow from 122.17.70.220←アクセスできるホワイトなIPを指定
</Directory>
</VirtualHost>
[/bash]

Apacheの編集を行います。

[bash] # vi /etc/httpd/conf/httpd.conf

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

↓変更

#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
ScriptAlias /cgi-bin/ "/var/qmail/vpopmail/public_html/cgi-bin/"
[/bash] [bash] # vi /etc/httpd/conf/httpd.conf

NameVirtualHost *:80←行頭の#をとって有効化
[/bash] [bash] # chmod 755 /etc/httpd/conf.d/virtualhost_qmailadmin.conf
[/bash] [bash] # service httpd restart
[/bash]

アクセスを行って確認します。
http://hoge.net/cgi-bin/qmailadmin
qmailadmin
qmailadminインストール

OKですねー☆

clamAVインストール

ウィルススキャンとして知名度が高くとても有効です。

[bash] # yum -y install clamd
[/bash]

root権限で動くようにします。

[bash] # vi /etc/clamd.conf

User clam

↓変更

#User clam
[/bash]

起動します

[bash] # /etc/rc.d/init.d/clamd start

Starting Clam AntiVirus Daemon: LibClamAV Warning: ******************
LibClamAV Warning: *** The virus database is older than 7 days! ***
LibClamAV Warning: *** Please update it as soon as possible. ***
LibClamAV Warning: **************************************************
[ OK ] [/bash]

自動起動設定on

[bash] # chkconfig clamd on

# chkconfig clamd --list
clamd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[/bash]

○ウィルス定義ファイル最新化

[bash] # sed -i 's/^Example/#Example/g' /etc/freshclam.conf
[/bash] [bash] # freshclam

Trying host db.jp.clamav.net (120.29.176.126)...
WARNING: getfile: daily-19121.cdiff not found on remote server (IP: 120.29.176.126)
WARNING: getpatch: Can't download daily-19121.cdiff from db.jp.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Downloading daily.cvd [100%] daily.cvd updated (version: 19421, sigs: 1152025, f-level: 63, builder: neo)
Downloading bytecode.cvd [100%] bytecode.cvd updated (version: 242, sigs: 46, f-level: 63, builder: dgoddard)
Database updated (3576296 signatures) from db.jp.clamav.net (IP: 203.178.137.175)
[/bash]

○ウィルススキャンテスト

[bash] # clamscan --infected --remove --recursive

----------- SCAN SUMMARY -----------
Known viruses: 3570739
Engine version: 0.98.4
Scanned directories: 3
Scanned files: 8
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 12.442 sec (0 m 12 s)
[/bash]

テスト用疑似ウィルスファイルダウンロード

[bash] # wget http://www.eicar.org/download/eicar_com.zip
# wget http://www.eicar.org/download/eicar.com.txt
# wget http://www.eicar.org/download/eicar_com.zip
# wget http://www.eicar.org/download/eicarcom2.zip
[/bash]

スキャン開始

[bash] # clamscan --infected --remove --recursive

/root/eicar.com.txt: Eicar-Test-Signature FOUND←検知
/root/eicar.com.txt: Removed.←削除
/root/eicar.com: Eicar-Test-Signature FOUND←検知
/root/eicar.com: Removed.←削除
/root/eicarcom2.zip: Eicar-Test-Signature FOUND←検知
/root/eicarcom2.zip: Removed.←削除
/root/eicar_com.zip: Eicar-Test-Signature FOUND←検知
/root/eicar_com.zip: Removed.←削除

----------- SCAN SUMMARY -----------
Known viruses: 3570739
Engine version: 0.98.4
Scanned directories: 3
Scanned files: 12
Infected files: 4
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 13.582 sec (0 m 13 s)
[/bash]

いいですね。

ウィルススキャン定期自動実行設定

[bash] # vi virusscan

#!/bin/bash

PATH=/usr/bin:/bin

# clamd update
yum -y update clamd > /dev/null 2>&1

# excludeopt setup
excludelist=/root/clamscan.exclude
if [ -s $excludelist ]; then
for i in
cat $excludelist
do
if [ $(echo "$i"|grep \/$) ]; then
i=
echo $i|sed -e ‘s/^\([^ ]*\)\/$/\1/p’ -e d
excludeopt="${excludeopt} --exclude-dir=^$i"
else
excludeopt="${excludeopt} --exclude=^$i"
fi
done
fi

# virus scan
CLAMSCANTMP=
mktemp
clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \

# report mail send
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in
hostname" root
rm -f $CLAMSCANTMP
[/bash]

ウィルススキャン定期自動スクリプトに実行権限付与

[bash] # chmod +x virusscan
[/bash]

○例外処理を行う場合

例として/backup/backup.tar.bz2をスキャン対象外にする
# echo "/backup/backup.tar.bz2" >> clamscan.exclude

例として/procディレクトリをスキャン対象外にする
# echo "/proc/" >> clamscan.exclude

ウィルススキャン定期自動スクリプトを毎日自動実行するディレクトリに格納。

[bash] # mv virusscan /etc/cron.daily/
[/bash]

SpamAssassin

スパムフィルターのインストールを行います。

[bash] # yum -y install spamassassin

Installed:
spamassassin.x86_64 0:3.3.1-3.el6

Dependency Installed:
db4-cxx.x86_64 0:4.7.25-18.el6_4 db4-devel.x86_64 0:4.7.25-18.el6_4 gdbm-devel.x86_64 0:1.8.0-36.el6
perl-Archive-Tar.x86_64 0:1.58-136.el6 perl-Crypt-OpenSSL-Bignum.x86_64 0:0.04-8.1.el6 perl-Crypt-OpenSSL-RSA.x86_64 0:0.25-10.1.el6
perl-Crypt-OpenSSL-Random.x86_64 0:0.04-9.1.el6 perl-Digest-HMAC.noarch 0:1.01-22.el6 perl-Digest-SHA.x86_64 1:5.47-136.el6
perl-Digest-SHA1.x86_64 0:2.12-2.el6 perl-Encode-Detect.x86_64 0:1.01-2.el6 perl-ExtUtils-MakeMaker.x86_64 0:6.55-136.el6
perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-136.el6 perl-IO-Socket-INET6.noarch 0:2.56-4.el6 perl-IO-Socket-SSL.noarch 0:1.31-2.el6
perl-IO-Zlib.x86_64 1:1.09-136.el6 perl-Mail-DKIM.noarch 0:0.37-2.el6 perl-MailTools.noarch 0:2.04-4.el6
perl-Net-DNS.x86_64 0:0.65-5.el6 perl-Net-LibIDN.x86_64 0:0.12-3.el6 perl-Net-SSLeay.x86_64 0:1.35-9.el6
perl-NetAddr-IP.x86_64 0:4.027-7.el6 perl-Package-Constants.x86_64 1:0.02-136.el6 perl-Socket6.x86_64 0:0.23-4.el6
perl-Test-Harness.x86_64 0:3.17-136.el6 perl-Time-HiRes.x86_64 4:1.9721-136.el6 perl-TimeDate.noarch 1:1.16-11.1.el6
perl-devel.x86_64 4:5.10.1-136.el6 portreserve.x86_64 0:0.0.4-9.el6 procmail.x86_64 0:3.22-25.1.el6_5.1

Complete!
[/bash]

SpamAssassin起動

[bash] # /etc/rc.d/init.d/spamassassin start

自動起動設定on
# chkconfig spamassassin on

# chkconfig spamassassin --list
spamassassin 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[/bash]

【SpamAssassin設定】

※CentOS5,6の場合

TextCatプラグインを有効化する
SpamAssassin設定ファイルok_languagesオプションを有効にするため

[bash] # vi /etc/mail/spamassassin/v310.pre

#loadplugin Mail::SpamAssassin::Plugin::TextCat

↓変更(行頭の#をはずして有効化する)

loadplugin Mail::SpamAssassin::Plugin::TextCat
[/bash]

【SpamAssassinのvpopmail対応[重要]】

vpopmailの場合/home/vpopmail/domains/ユーザー/Maildirという形式になるので
設定が必要です。

SpamAssassin起動設定を編集します。

[bash] # vi /etc/sysconfig/spamassassin

SPAMDOPTIONS="-d -c -m5 -H"

↓変更

SPAMDOPTIONS="-d -m5 -v -u vpopmail --virtual-config-dir=/home/vpopmail/domains/%d/%l/.spamassassin"
[/bash]

所有権をvpopmailに

[bash] # chown vpopmail. /var/run/spamassassin/
[/bash]

再起動させて反映させます。

[bash] # /etc/rc.d/init.d/spamassassin restart
[/bash]

SpamAssassin最新版スクリプト

[bash] # vi spamassassin-update

#!/bin/bash

# SpamAssassin設定ファイル最新版ダウンロード
cd /etc/mail/spamassassin
wget -qN http://www.flcl.org/~yoh/user_prefs

# 設定ファイル更新時のみSpamAssassin再起動
diff user_prefs user_prefs.org > /dev/null 2>&1
if [ $? -ne 0 ]; then
cp user_prefs local.cf

# スパム判断したメールを添付形式にしないように設定
echo "report_safe 0" >> local.cf

# スパム判断したメールの件名に「***SPAM***」を付加するように設定※受信メールサーバーがPOPの場合のみ
echo "rewrite_header Subject ***SPAM***" >> local.cf

# SpamAssassin再起動
if [ -f /etc/rc.d/init.d/spamassassin ]; then
/etc/rc.d/init.d/spamassassin restart > /dev/null
else
systemctl restart spamassassin > /dev/null
fi
fi
cp user_prefs user_prefs.org
[/bash]

実行権限付与

[bash] # chmod +x spamassassin-update
[/bash]

スクリプト実行してみる

[bash] # ./spamassassin-update
[/bash]

/var/log/maillogでログを見てみる

[bash] Sep 24 00:35:25 hoge.net spamd[17097]: spamd: server killed by SIGTERM, shutting down
Sep 24 00:35:28 hoge.net spamd[17132]: logger: removing stderr method
Sep 24 00:35:43 hoge.net spamd[17134]: rules: meta test URIBLSBL00 has dependency 'BAYES_00' with a zero score
Sep 24 00:35:43 hoge.net spamd[17134]: rules: meta test FROM_41_FREEMAIL has dependency 'NSL_RCVD_FROM_41' with a zero score
Sep 24 00:35:43 hoge.net spamd[17134]: rules: meta test BOUNCE_MESSAGE has dependency 'ALL_TRUSTED' with a zero score
Sep 24 00:35:43 hoge.net spamd[17134]: rules: meta test TWO_IPS_RCVD has dependency 'ALL_TRUSTED' with a zero score
Sep 24 00:35:43 hoge.net spamd[17134]: rules: meta test __NOT_SPOOFED has dependency 'ALL_TRUSTED' with a zero score
Sep 24 00:35:43 hoge.net spamd[17134]: rules: meta test SPAMCOP00 has dependency 'BAYES_00' with a zero score
Sep 24 00:35:44 hoge.net spamd[17134]: spamd: server started on port 783/tcp (running version 3.3.1)
Sep 24 00:35:44 hoge.net spamd[17134]: spamd: server pid: 17134
Sep 24 00:35:44 hoge.net spamd[17134]: spamd: server successfully spawned child process, pid 17135
Sep 24 00:35:44 hoge.net spamd[17134]: spamd: server successfully spawned child process, pid 17136
Sep 24 00:35:44 hoge.net spamd[17134]: prefork: child states: IS
Sep 24 00:35:44 hoge.net spamd[17134]: prefork: child states: II
[/bash]

SpamAssassin最新化スクリプトを毎日自動実行されるディレクトリに格納

[bash] # mv spamassassin-update /etc/cron.daily/
[/bash]

/etc/mail/spamassassin/local.cfを設定することで細かな設定が可能

[bash] # vi /etc/mail/spamassassin/local.cf
[/bash]

//メールをスパムと判断するヒット数
//各チェック項目を加算し、合計値が5を超えた場合はスパムとして判定する
//メールヘッダーの「X-Spam-Status: No, hits=4.998~」のhits がそれにあたる

required_score 13.0

↓変更する場合(今回変更しなかった。参考に)

required_hits 5

//spam分析結果をメールの本文ではなくヘッダにつける
report_safe 0

↓変更

report safe 1

○ブラックリスト/ホワイトリスト指定

//無条件に受けつけるアドレスを記述
whitelist_from test@example.com spam@example.com
whitelist_from *@spam.com

//ブラックリストとして登録したいアドレス
blacklist_from test@somewhere.com

○言語を指定する場合

//受け取る言語を限定する(default: all)
ok_languages ja en

//HTMLメールの場合等に言語を限定する(default: all)
ok_locales ja en

[bash] # vi /etc/cron.d/sa-update

下記の行頭に#がはずれて有効になっている事を確認。

10 4 * * * root /usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log
[/bash]

設定を反映

[bash] # service spamassassin restart
[/bash]

SpamAssasin設定ファイルを確認

[bash] # ll /etc/mail/spamassassin
合計 1372
drwxr-xr-x 2 root root 4096 9月 24 00:24 2014 channel.d
-rw-r--r-- 1 root root 1299 12月 5 22:35 2013 init.pre
-rw-r--r-- 1 root root 454641 9月 24 00:35 2014 local.cf
drwx------ 2 root root 4096 12月 5 22:35 2013 sa-update-keys
-rw-r--r-- 1 root root 62 12月 5 22:35 2013 spamassassin-default.rc
-rwxr-xr-x 1 root root 35 12月 5 22:35 2013 spamassassin-helper.sh
-rw-r--r-- 1 root root 55 12月 5 22:35 2013 spamassassin-spamc.rc
-rw-r--r-- 1 root root 454593 9月 17 15:54 2014 user_prefs
-rw-r--r-- 1 root root 454593 9月 24 00:35 2014 user_prefs.org
-rw-r--r-- 1 root root 2523 9月 24 00:30 2014 v310.pre
-rw-r--r-- 1 root root 1194 12月 5 22:35 2013 v312.pre
-rw-r--r-- 1 root root 2416 12月 5 22:35 2013 v320.pre
-rw-r--r-- 1 root root 1237 12月 5 22:35 2013 v330.pre
[/bash]

○ SpamAssassinとqmailの連携

qmailにスパム振り分けに必要なmaildropをインストールさせる。

[bash] # cd /usr/local/src
[/bash] [bash] src]# wget http://pkgs.fedoraproject.org/repo/pkgs/maildrop/maildrop-2.0.4.tar.bz2/6a760efe429716ab0be67a1ddc554ed7/maildrop-2.0.4.tar.bz2

maildrop-2.0.4.tar.bz2′ へ保存完了 [2286125/2286125] [/bash]

maildropのRPMパッケージの作成

[bash] # rpmbuild -tb –clean maildrop-2.0.4.tar.bz2

エラー: ビルド依存性の失敗:
/usr/include/fam.h は maildrop-2.0.4-1.x86_64 に必要とされています
pcre-devel は maildrop-2.0.4-1.x86_64 に必要とされています
[/bash]

ライブラリをインストール

[bash] # yum install pcre-devel gdbm-devel fam-devel
[/bash]

改めて実行

[bash] # rpmbuild -tb –clean maildrop-2.0.4.tar.bz2

結構時間がかかります。

書き込み完了: /root/rpmbuild/RPMS/x86_64/maildrop-2.0.4-1.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/maildrop-devel-2.0.4-1.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/maildrop-man-2.0.4-1.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/maildrop-debuginfo-2.0.4-1.x86_64.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.DENamb
[/bash]

Qmail-Scannerがメールを解析するのに必要なreformimeを含んでいる
maildropをインストールする

[bash] # rpm -Uvh /root/rpmbuild/RPMS/x86_64/maildrop-2.0.4-1.x86_64.rpm

準備中… ########################################### [100%] 1:maildrop ########################################### [100%]

# rpm -Uvh /root/rpmbuild/RPMS/x86_64/maildrop-man-2.0.4-1.x86_64.rpm

準備中… ########################################### [100%] 1:maildrop-man ########################################### [100%] [/bash] [bash] # cd /usr/local/src/qmail-1.03

qmail-1.03]# wget http://www.qmail.org/qmailqueue-patch

qmailqueue-patch' へ保存完了 [2510/2510] [/bash]

パッチを当てます。

[bash] qmail-1.03]# patch < qmailqueue-patch

patching file Makefile
Hunk #1 succeeded at 1487 (offset 4 lines).
patching file qmail.c
[/bash]

qmailを一時停止させます。

[bash] # /etc/rc.d/init.d/qmail stop
[・bash]

上書きインストールを行います。
[bash] qmail-1.03]# make setup check

./load forward qmail.o strerr.a alloc.a fd.a wait.a sig.a \
env.a substdio.a error.a str.a fs.a auto_qmail.o
./load condredirect qmail.o strerr.a fd.a sig.a wait.a \
seek.a env.a substdio.a error.a str.a fs.a auto_qmail.o
./install
./instcheck
[/bash]

qmail起動させます

[bash] # /etc/rc.d/init.d/qmail start
Starting qmail
[/bash]

プロセス確認。動いてますね。

[bash] # /etc/rc.d/init.d/qmail status
qamil (pid 7131 7139 7135 7132) is running...
[/bash] [bash] # cd /usr/local/src
[/bash]

Qmail-Scannerインストールに必要なsetuidgidコマンドをインストールする。

daemontoolsダウンロード

[bash] # wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
[/bash]

展開します。

[bash] src]# tar zxvf daemontools-0.76.tar.gz
[/bash] [bash] src]# cd admin/daemontools-0.76/
[/bash] [bash] daemontools-0.76]# sed -i 's/gcc -O2/gcc -O2 --include \/usr\/include\/errno\.h/g' src/conf-cc
[/bash]

コンパイルします。

[bash] daemontools-0.76]# ./package/compile

grep sysdep hasmkffo.h >> sysdeps
grep sysdep hasflock.h >> sysdeps
grep sysdep hasshsgr.h >> sysdeps
Copying commands into ./command...
[/bash]

setuidgidコマンドが使えるように移動する

[bash] daemontools-0.76]# cp command/setuidgid /usr/local/bin/
[/bash]

Qmail-Scannerインストールに必要なperl-suidperlをインストール

[bash] # yum -y install perl-suidperl

Installed:
perl-suidperl.x86_64 4:5.10.1-136.el6

Complete!
[/bash]

qwcandユーザー作成。

[bash] # useradd -M -d /tmp -s /sbin/nologin qscand
[/bash]

お約束へ移動。

[bash] # cd /usr/local/src
[/bash]

最新版確認(http://qmail-scanner.sourceforge.net/)

Qmail-Scannerダウンロード

[bash] src]# wget http://jaist.dl.sourceforge.net/sourceforge/qmail-scanner/qmail-scanner-2.01.tgz

qmail-scanner-2.01.tgz’ へ保存完了 [226699/226699] [/bash]

展開します。

[bash] src]# tar zxvf qmail-scanner-2.01.tgz
[/bash] [bash] src]# cd qmail-scanner-2.01
[/bash]

configureを行います。

[bash] qmail-scanner-2.01]# ./configure –install –scanners clamdscan,verbose_spamassassin –notify none
[/bash] [bash] Building Qmail-Scanner 2.01…

***** NOTE ******

Qmail-Scanner doesn’t have language translations for ja_JP.UTF-8,
– so defaulting to english…

[Hit <RETURN> to continue]←空エンター

This script will search your system for the virus scanners it knows
about, and will ensure that all external programs
qmail-scanner-queue.pl uses are explicitly pathed for performance
reasons.

Continue? ([Y]/N)
y←y応答

長い・・・フリーズしてしまった??

と思ったら動き出した。3分~5分程度固まったので
途中停止させたりして慌てないこと。

Something like spamc for SpamAssassin detected – but not correctly installed
(didn’t include a “X-Spam-Status” line in output).
Please read Q-S FAQ if you want it – especially check that spamd daemon
is running. Ignoring…

The following binaries and scanners were found on your system:

mimeunpacker=/usr/bin/reformime

Content/Virus Scanners installed on your System

max-scan-size=100000000
clamdscan=/usr/bin/clamdscan (which means clamscan won’t be used as clamdscan is better)

Qmail-Scanner details.

log-details=syslog
log-crypto=0
fix-mime=2
ignore-eol-check=0
debug=1
notify=none
redundant-scanning=yes
virus-admin=System Anti-Virus Administrator <hogeuser@hoge.net>
local-domains=’hoge.net’
silent-viruses=’klez’,’bugbear’,’hybris’,’yaha’,’braid’,’nimda’,’tanatos’,’sobig’,’winevar’,’palyh’,’fizzer’,’gibe’,’cailont’,’lovelorn’,’swen’,’dumaru’,’sober’,’hawawi’,’holar-i’,’mimail’,’poffer’,’bagle’,’worm.galil’,’mydoom’,’worm.sco’,’tanx’,’novarg’,’\@mm’
scanners=”clamdscan”

If that looks correct, I will now generate qmail-scanner-queue.pl
for your system…
Continue? ([Y]/N)
Testing suid nature of /usr/bin/perl…
Looks OK…
Hit RETURN to create initial directory structure under /var/spool/qscan,
and install qmail-scanner-queue.pl under /var/qmail/bin:←空エンター

Finished. Please read README(.html) and then go over the script
(/var/qmail/bin/qmail-scanner-queue.pl) to check paths/etc.

“/var/qmail/bin/qmail-scanner-queue.pl -r” should return some well-known virus
definitions to show that the internal perlscanner component is working.

That’s it!

****** FINAL TEST ******

Please log into an unpriviledged account and run
/var/qmail/bin/qmail-scanner-queue.pl -g

If you see the error “Can’t do setuid”, or “Permission denied”, then
refer to the FAQ.

(e.g. “setuidgid qmaild /var/qmail/bin/qmail-scanner-queue.pl -g”)

That’s it! To report success:

% (echo ‘First M. Last’; cat SYSDEF)|mail jhaar-s4vstats@crom.trimble.co.nz
Replace First M. Last with your name.
[/bash]

成功☆

テストファイルをrootのhomeにコピーします。

[bash] qmail-scanner-2.01]# cp /usr/local/src/qmail-scanner-2.01/contrib/test_installation.sh /root/test_installation.sh
[/bash]

tcpserverに読ませるcdbの作成

[bash] # echo “:allow,QMAILQUEUE=\”/var/qmail/bin/qmail-scanner-queue.pl\”” >> /home/vpopmail/etc/tcp.smtp
[/bash]

tcpserverが読めるcdb形式に変換する

[bash] # tcprules /home/vpopmail/etc/tcp.smtp.cdb /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
[/bash]

起動スクリプトを編集します。

[bash] # vi /etc/rc.d/init.d/qmail

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

----追加(ここから)----

QMAILQUEUE=”/var/qmail/bin/qmail-scanner-queue.pl”
export QMAILQUEUE

----追加(ここまで)----

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

[/bash]

再起動する

[bash] # /etc/rc.d/init.d/qmail restart
[/bash]

プロセスを確認。

[bash] # /etc/rc.d/init.d/qmail status
qamil (pid 9310 9318 9314 9311) is running…
[/bash]

vpopmailをSpamAssassinと連携させる。

[bash] # vi /home/vpopmail/etc/maildroprc

SHELL=”/bin/bash”
import EXT
import HOST
DELIVER=”|/home/vpopmail/bin/vdelivermail ” delete”
VHOME=/home/vpopmail/bin/vuserinfo -d $EXT@$HOST
logfile “/home/vpopmail/maildrop.log” # ログを記録する場合

# 存在しないユーザ宛メールの処理
if ( $VHOME eq “” )
{
to “$DELIVER”
}

# 未承諾広告メールの削除(ここから)
# 件名が日本語の場合
if (/^Subject:.*iso-2022-jp/:h)
{
# 件名をUTF-8コードへ変換※システムの文字コードがUTF-8(デフォルト)の場合
SUBJECT=cat |grep Subject|nkf -mw

# 件名をEUCコードへ変換※システムの文字コードがEUCの場合
SUBJECT=cat |grep Subject|nkf -me

# 件名に未承諾広告※が含まれているメールを削除
if ($SUBJECT =~ /.*未承諾広告※.*/)
{
to “/dev/null”
}
}
# 未承諾広告メールの削除(ここまで)

# SpamAssassinによるスパムチェック
# ※fetchmail取り込みメールのスパム検査未実施対処
if (!/^X-Spam-/:h)
{
exception {
xfilter “/usr/bin/spamc”
}
}

# SpamAssassinがスパム判定したメールはスパムメール用メールボックスへ配送
if (/^X-Spam-Flag: *YES/)
{
to “$VHOME/Maildir/.Spam/”
}

# その他のメールは通常どおりに配送
to “$DELIVER”

[/bash]

権限の付与

[bash] # chown vpopmail. /home/vpopmail/etc/maildroprc

パーミッションの付与
# chmod 600 /home/vpopmail/etc/maildroprc
[/bash]

全ドメインの.qmail-default設定変更、全ドメインに対して行っていくこと。

[bash] # vi /home/vpopmail/domains/どめいん名/.qmail-default

| /home/vpopmail/bin/vdelivermail ” bounce-no-mailbox

↓変更

| maildrop /home/vpopmail/etc/maildroprc
[/bash]

maildropログロテーション編集

[bash] # vi /etc/logrotate.d/maildrop

/home/vpopmail/maildrop.log {
missingok
nocreate
notifempty
}
[/bash]

tmpwatchインストール(古いスパムメールを削除するため)

[bash] # yum -y install tmpwatch
[/bash]

SpamAssasin学習スクリプトを作成(vpopmail専用)

[bash] # vi spamassassin-learn

#!/bin/bash

for domains in /home/vpopmail/bin/vdominfo -n|grep -v "^$"
do
for user in /home/vpopmail/bin/vuserinfo -n -D $domains
do
# 正常メール格納ディレクトリ
hamdir=/home/vpopmail/bin/vuserinfo -d $user@$domains/Maildir/cur

dbdir=/home/vpopmail/bin/vuserinfo -d $user@$domains/.spamassassin/
[ ! -d $dbdir ] && mkdir $dbdir && chown vpopmail. $dbdir && chmod 700 $dbdir

# 正常メール学習
if [ -d “$hamdir” ]; then
su vpopmail -s “/bin/bash” -c \
“sa-learn –ham $hamdir –dbpath $dbdir | \
logger -p mail.info -t ‘sa-learn for $user'”
fi

# スパムメール格納ディレクトリ
spamdir=/home/vpopmail/bin/vuserinfo -d $user@$domains/Maildir/.Spam/cur

# スパムメール学習
if [ -d “$spamdir” ]; then
# スパムメールをSpamAssassinに学習させる
su vpopmail -s “/bin/bash” -c \
“sa-learn –spam $spamdir –dbpath $dbdir | \
logger -p mail.info -t ‘sa-learn for $user'”
fi
done
done

[/bash]

※非vpopmailも一応書いておきます (IMAP用)

#!/bin/bash

PATH=/usr/sbin:/usr/bin:/bin

for user in ls /home/
do
# 正常メール
hammail=/home/$user/Maildir/cur

# 正常メール学習
if [ -d “$hammail” ]; then
# 正常メールをSpamAssassinに学習させる
su $user -s “/bin/bash” -c “sa-learn –ham $hammail 2>&1| \
logger -p mail.info -t ‘sa-learn for $user'”
fi

# スパムメール
spammail=/home/$user/Maildir/.Spam/cur

# スパムメール学習
if [ -d “$spammail” ]; then
# スパムメールをSpamAssassinに学習させる
su $user -s “/bin/bash” -c “sa-learn –spam $spammail 2>&1| \
logger -p mail.info -t ‘sa-learn for $user'”

# 受信後一ヶ月経過したスパムメールを削除
tmpwatch -m 720 $spammail
fi
done

SpamAssassin学習スクリプトに実行権限付与

[bash] # chmod 700 spamassassin-learn
[/bash]

毎日学習させます。

[bash] # mv spamassassin-learn /etc/cron.daily/
[/bash]

どれだけ学習したか確認するコマンド(–db-pathでしっかり指定しないとエラー)

[bash] # sa-learn –db-path /home/vpopmail/domains/ドメイン/ユーザー/Maildir/.spamassassin –dump magic
[/bash]

学習スクリプトを実行すると/var/log/maillogに以下のようなログがでます。
出るなら成功です。

Sep 24 04:59:24 hoge.net sa-learn for hogeuser: Learned tokens from 0 message(s) (0 message(s) examined)

spamcでエラー発生。 spamc[9360]: connect to spamd on 127.0.0.1 failed

[bash] spamc[9360]: connect to spamd on 127.0.0.1 failed, retrying (#3 of 3): Connection timed out
[/bash]

○iptablesにループバックの許可設定を行う

[bash] # vi /etc/sysconfig/iptables

-A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
-A OUTPUT -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
[/bash]

反映

[bash] # service iptables restart
[/bash]

解決

[bash] # sa-update
[/bash] [bash] # service spamassassin restart
[/bash]

Sep 24 05:51:14 hoge.net qmail-scanner-queue.pl: qmail-scanner[11296]: Clear:RC:0(209.85.215.48): 0.026677 1599 kanrisha@gmail.com hogeuser@hoge.net testiptablestart!!!! <CAHjUKq3bdoaEkbGg1gH1o_fvzPi-tneYYP-anF=ZAdY_4gpByQ@mail.gmail.com> orig-hoge.net141150547454011296:1599 1411505474.11298-0.hoge.net:5 1411505474.11298-1.hoge.net:26
Sep 24 05:51:14 hoge.net qmail: 1411505474.852952 starting delivery 3: msg 8390829 to local hoge.net-hogeuser@hoge.net
Sep 24 05:51:14 hoge.net qmail: 1411505474.853025 status: local 1/10 remote 0/20
Sep 24 05:51:14 hoge.net spamd[11234]: spamd: connection from localhost [127.0.0.1] at port 52490
Sep 24 05:51:14 hoge.net spamd[11234]: spamd: processing message
<CAHjUKq3bdoaEkbGg1gH1o_fvzPi-tneYYP-anF=ZAdY_4gpByQ@mail.gmail.com> for vpopmail:91
Sep 24 05:51:18 hoge.net spamd[11234]: spamd: clean message (4.8/13.0) for vpopmail:91 in 4.1 seconds, 1905 bytes.
Sep 24 05:51:18 hoge.net spamd[11234]: spamd: result: . 4 – ARIN,CONTENT_TYPE_PRESENT,DIRECTUNKNOWN,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,
FREEMAIL_FROM,HTML_MESSAGE,MULTIPART_ALTERNATIVE,ONLY1HOPDIRECT,
ONLY1HOPDIRECTARIN,QENCPTR1,RDNS_NONE scantime=4.1,size=1905,user=vpopmail,uid=91,required_score=13.0,rhost=localhost,
raddr=127.0.0.1,rport=52490,mid=<CAHjUKq3bdoaEkbGg1gH1o_fvzPi-tneYYP-anF=ZAdY_4gpByQ@mail.gmail.com>,autolearn=no

お疲れさまでしたー。

ちゃんちゃん。

トラブルメモ

○ vpopmailをインストールしているのにメインドメイン宛には/home/ユーザー宛に
配送されてしまう問題。

/home/vpopmail/domains/ドメイン/ユーザー宛に配送したい。

1. localsとmeに同名のFQDNを登録すること。

これは

/var/qmail/control/locals

/var/qmail/control/me

にFQDNを登録する必要がある。
かならず同じ内容を登録すること。

2. hostnameの編集をしっかり行っておくこと。

qmail 構築
最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG