POP before SMTP

Red Hat Linuxのページトップへ

メールサーバーの不正中継を防ぐためPOP before SMTPを設定
受信してから30分間は送信ができます
DRACを使用する

DRACをダウンロードし、解凍する
# mkdir /usr/local/src/drac
# cd /usr/local/src/drac
# wget ftp://ftp.cc.umanitoba.ca/src/drac.tar.Z
# tar zxvf drac.tar.Z

Makefileを書き換える
# gedit Makefile

8行目付近
INSTALL = /usr/bin/install
EBIN = /usr/local/sbin
MAN = /usr/local/man/man

36行目付近
DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C -DREQ_HASH

40行目付近
CFLAGS = $(DEFS) -g
LDLIBS = -ldb
TSTLIBS = -L. -ldrac
RPCGENFLAGS = -C -I

54行目付近
MANLIB = 3
MANADM = 8
インストールする
# make
# make install
# mkdir /usr/local/man/man3
# mkdir /usr/local/man/man8
(前章でqpopperをインストールしてる人はman8ディレクトリは作成済み)
# make install-man

/etc/mailにdracd.allowファイルを作り、自IPからのみ許可します
# gedit /etc/mail/dracd.allow

255.255.255.255 127.0.0.1


Qpopperで使うので、libdrac.aを/usr/libにコピーする
# cp libdrac.a /usr/local/lib/

dracd-setup.linuxファイルを編集する
# gedit dracd-setup.linux
15行目付近
daemon rpc.dracd&
↓
daemon /usr/local/sbin/rpc.dracd -i -e 5 &
(認証の有効期限を5分にする)

21行目付近
killproc rpc.dracd
↓
killproc /usr/local/sbin/rpc.dracd
dracd-setup.linuxをinit.dにコピーし、ランレベル3と5にリンクする
# cp dracd-setup.linux /etc/rc.d/init.d/dracd
# chmod 755 /etc/rc.d/init.d/dracd
# ln -s /etc/rc.d/init.d/dracd /etc/rc.d/rc3.d/S99dracd
# ln -s /etc/rc.d/init.d/dracd /etc/rc.d/rc5.d/S99dracd

DRACを実行する
# /etc/rc.d/init.d/dracd start


DRACに対応させるため、Qpopperを再インストールする
Qpopperを展開したディレクトリに移動
(『Qpopperの設定』で設定している場合には多分 # cd /root/qpopper4.0.5)
コンパイルして、再インストールをする
# ./configure --enable-specialauth --enable-drac
Mailbox形式では
# ./configure --enable-specialauth --enable-drac --enable-home-dir-mail=Mailbox
(# ./configure --enable-specialauth --with-drac=/usr/lib)
# make
# make install

Qpopperを再起動する
# /etc/rc.d/init.d/xinetd restart


sendmailの設定
設定ファイルのあるディレクトリに移動
# cd /etc/mail

sendmail.mc の最後に以下の部分を追加する
# gedit sendmail.mc

LOCAL_CONFIG
Kdrac hash /etc/mail/dracd

LOCAL_RULESETS
SLocal_check_rcpt

R$*<tabキー>$: $&{client_addr}
R$+<tabキー>$: $(drac $1 $: ? $)
R?<tabキー>$@ ?
R$+<tabキー>$@ $#OK

<tabキー>は Tabキーを押す

sendmail.cfを作成する。
# make sendmail.cf

sendmail を再起動する
# /etc/rc.d/init.d/sendmail restart

/etc/mail/accessの編集
access ファイルは、POP before SMTPよりも優先されるので、accessファイルは空にしておく
自IPとローカルIPの設定は残しても大丈夫
(テストが終わってから追加しなおす方がいい)

現在DRACに登録された内容を確認する方法
# makemap -u hash /etc/mail/dracd.db

192.168.0.3 108845031
のようなものが出ればOK
あとは1時間後ぐらいにログが消えているのを確認するか、先に受信しない場合に送信できないことを確認する
注意:送信者とあて先が同じサーバー内にあるとPOP beforeは無効になるようです
ちなみにPOP beforeで送信できないときのOutlook Expressのエラーは
受信者の 1 人がサーバーによって拒否されたため、メッセージを送信できませんでした。 拒否された電子メール アドレス : [あて先] 件名 '[件名]', アカウント : '[アカウント名]', サーバー : '[サーバー名]', プロトコル : SMTP, サーバーの応答 : '554 <[あて先]>: Recipient address rejected: Relay access denied', ポート : 25, セキュリティ (SSL): なし, サーバー エラー : 554, エラー番号 : 0x800CCC79

ログをリセットする方法
# rpc.dracd -i


Postfixの設定
main.cfに以下を追記する
# gedit /etc/postfix/main.cf
smtpd_recipient_restrictions = permit_mynetworks,
                               check_client_access hash:/etc/mail/dracd,
                               check_relay_domains,
                               reject
Postfixのreloadをする
# /etc/init.d/postfix reload

ぺんたん.info
あかいひ.com
IPくん.com
8枠.com - 競馬情報
galhime.com

PC Q&A||古い記事|雑学|ラーメン