このWebサイト ひつじ帳 は、管理者がWEB関連の技術をまとめた備忘録サイトです。 Linux,CentOS,PHP,MySQL,Blogger,JavaScript,CSS について記録しています。

CentOS-5/qmail/POPBeforeSMTP

[ qmail ]

ダウンロード


# wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz ←■ qmailダウンロード
※wgetが固まってダウンロードできない場合は下記手順でダウンロード
# wget --no-passive-ftp ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz ←■ qmailダウンロード
# wget http://www.itheart.com/phpgw/qmail-date-localtime.patch ←■ 日本標準時間対応パッチダウンロード
# wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz ←■ SMTP-Auth対応パッチダウンロード
# wget http://qmail.mirrors.summersault.com/qmail-smtpd-relay-reject ←■ 不正中継拒否対応パッチダウンロード

  • qmail-1.03
  • qmail-1.03.errno.patch
  • qmail-date-localtime.patch
  • qmail-smtpd-auth
  • qmail-smtpd-relay-reject
  • checkpassword-0.90
  • checkpassword-0.90.errno.patch
  • ucspi-tcp-0.88.tar.gz
  • ucspi-tcp-0.88.errno.patch
  • qmail-remote-auth.patch

qmail-date-localtime.patch は、ヘッダに記録される日付・時間情報をローカルタイムに合わせます。
対策が施されたqmailサーバから配信されたメールには、日本標準時を意味する「+0900」が付加されます。

qmailインストールに必要なユーザ、グループを作成する


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

qmail インストール


[user@linux qmail]$ wget 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対応パッチダウンロード

[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]$ /bin/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]#

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


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

外部SMTP-Auth対応パッチ インストール

qmail-remotet のみを後からインストールする場合

[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 に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/ 内

defaultdomain

toヘッダなどにドメイン名が省略された場合、補完されるドメイン名

example.jp

locals

受信するホスト名・ドメイン名:qmail-sendが利用

localhost
localhost.example.jp
host.example.jp
example.jp

rcpthosts

受信するホスト名・ドメイン名:qmail-smtpdが利用

localhost
example.jp
.example.jp

me

自サーバのFQDN

host.example.jp

plusdomain

ドメイン部が+で終わっている場合に付加されるドメイン。

user@host+」なら「user@host.example.jp」と置換される(qmal-injectが利用)
example.jp

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


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

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

root宛のメールを転送する


[root@linux ~]# echo "&root@`hostname`" > /var/qmail/alias/.qmail-postmaster
[root@linux ~]# echo "&root@`hostname`" > /var/qmail/alias/.qmail-mailer-daemon
[root@linux ~]# echo "&root@`hostname`" > /var/qmail/alias/.qmail-root
[root@linux ~]# chmod 644 .qmail*

checkpassword インストール

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

[user@linux qmail]$ wget http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz ←■ checkpasswordダウンロード
[user@linux qmail]$ wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/checkpassword-0.90.errno.patch ←■ エラー対策patchダウンロード

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

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

※ エラー対策
[user@linux checkpassword-0.90]$ patch < ../checkpassword-0.90.errno.patch ←■ error.h パッチファイル施行
 
[root@linux checkpassword-0.90]# su - ←■ root権限になる
[root@linux checkpassword-0.90]# cd /home/user/qmail/checkpassword-0.90
[root@linux checkpassword-0.90]# make && make setup check ←■ コンパイルとインストールを実行する

~ 中略 ~

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

[root@linux ~]# chmod 4750 /bin/checkpassword ←■ checkpasswordが所有者権限で動作するように設定

■ checkpassword のパス → /bin/checkpassword

tcpserver のインストールとcdbの作成


[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 qmail]$ su - ←■ root権限になる
[root@linux qmail]# make setup check

~ 中略 ~

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

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

中継許可ホストの登録

cdbの基になるファイルを準備します。ここでは/etc/tcp.smtpファイルとして作成。

[root@linux |]# vi /etc/tcp.smtp
127.:allow,RELAYCLIENT=""
192.168.0.:allow,RELAYCLIENT="" ←■ 192.168.0.* からの接続は環境変数RELAYCLIENTに設定し、接続を許可する
[root@linux ~]#
[root@linux ~]# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp ←■ cdbファイルを作成

接続許可例


192.168.0.0-31:allow,RELAYCLIENT="" ←■ 192.168.0.0から192.168.0.31まで接続許可
192.168.0.:deny ←■ 192.168.0.* を接続拒否

POP Before SMTP の導入

relay-ctrl-3.1.1 インストール


[root@linux]$ wget http://untroubled.org/relay-ctrl/relay-ctrl-3.1.1.tar.gz
[root@linux]$ tar xvfz relay-ctrl-3.1.1.tar.gz
[root@linux]$ cd relay-ctrl-3.1.1/
[root@linux]# これより root権限で作業する
[root@linux]# mkdir /usr/local/man
[root@linux]# make
[root@linux]# ./installer

■ relay-ctrl のパス → /usr/local/bin/relay-ctrl-check /usr/local/bin/relay-ctrl-allow /usr/local/bin/relay-ctrl-chdir /usr/local/bin/relay-ctrl-age

設定ファイルとディレクトリを作成


[root@linux]# mkdir /var/spool/relay-ctrl
[root@linux]# mkdir /var/spool/relay-ctrl/allow
[root@linux]# chmod 700 /var/spool/relay-ctrl
[root@linux]# chmod 777 /var/spool/relay-ctrl/allow
[root@linux]# mkdir /etc/relay-ctrl
[root@linux]# echo "/var/spool/relay-ctrl/allow" > /etc/relay-ctrl/RELAY_CTRL_DIR ←■ RelayオープンしたIPを保存するファイルパスを登録

Relay の設定

RelayをオープンにしたIPアドレスを記録したファイルの寿命を設定する場合は、/etc/relay-ctrl/RELAY_CTRL_EXPIRYファイルに、秒単位で記入します。

[root@linux]# echo '600' > /etc/relay-ctrl/RELAY_CTRL_EXPIRY ←■ 10分間で設定
[root@linux]#

有効期限切れ消去

RelayをオープンにしたIPアドレスの記録を整理するプログラムを5分ごとに起動するようにします(5分でなくても構いません)。
relay-ctrl-ageプログラムにより、RELAY_CTRL_EXPIRYで指定した保存期間を過ぎた記録を消去できます。

[root@linux]# crontab -e

*/5 * * * * /usr/local/bin/envdir /etc/relay-ctrl /usr/local/bin/relay-ctrl-age

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に置換え

qmail 起動スクリプト作成

起動スクリプトを用意する


[root@linux ~]# cp /var/qmail/boot/home /var/qmail/rc ←■ qmail起動コマンドサンプルを所定の場所へコピー※dot-forward利用しない場合

[root@linux ~]# cp /var/qmail/boot/home+df /var/qmail/rc ←■ qmail起動コマンドサンプルを所定の場所へコピー

※dot-forward利用する場合

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

Maildirディレクトリの手動生成

vpopmail をインストールする場合は必要無い
ユーザーアカウントになってから、各ユーザーディレクトリを作成する

[root@linux]$ /var/qmail/bin/maildirmake ~/Maildir

Maildirディレクトリの自動生成

vpopmail をインストールする場合は必要無い

[root@linux]# /var/qmail/bin/maildirmake /etc/skel/Maildir

tcsh インストール


[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シェルインストール

起動スクリプト作成・起動

[ 起動スクリプト ]

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

OP25B(Outbound Port 25 Blocking)対策


[root@linux ~]# echo :SMTPサーバー名:587 ユーザー名 パスワード > /var/qmail/control/smtproutes ←■ SMTP認証情報設定
SMTPサーバー名 = プロバイダのSMTPサーバー名
ユーザー名 = プロバイダのメールアカウント名
パスワード = プロバイダのメールパスワード

※ 直接編集する場合
[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

0 件のコメント:

人気記事

アーカイブ

このブログを検索