Delegateを利用したSMTPリレー(SMTP-Auth)
2011年12月7日Delegateを利用したSMTPリレー(SMTP-Auth)
通常、ローカルにあるサーバからグローバルにあるサーバへはメールを送信できません。
これは、「逆引き設定がないメールサーバ(MX)からのメール受信を拒否」するサーバが多い為です。
そこで、Delegateを利用してローカルのサーバからグローバルのメールサーバへリレーさせることで、メールの送信を許可するやり方です。
【Delegateとは】
Delegateとは、各種プロトコルを中継するプロキシサーバです
対応しているプロトコルは非常に豊富で、今回はSMTP(SMTP-Auth)プロトコルのプロキシサーバを構築しました。
【インストール】
以下、インストール方法です
$ cd /usr/local/src/
$ sudo wget ftp://ftp.delegate.org/pub/DeleGate/delegate9.9.7.tar.gz
$ sudo tar zxf delegate9.9.7.tar.gz
$ cd delegate9.9.7
$ sudo make
無事コンパイルが完了すると、srcディレクトリにdelegatedバイナリが作成されていますので、それをコピーして利用します
$ sudo mkdir -p /usr/local/delegate/bin
$ sudo cp src/delegated /usr/local/delegate/bin
【各種ディレクトリの作成】
Delegateが利用するディレクトリを作成します
Delegateはnobodyユーザで起動する為、logディレクトリの所有者も合わせておきます
$ sudo mkdir -p /var/delegate/log
$ sudo chown -Rf nobody:nobody /var/delegate/log
$ sudo ln -s /var/delegate/log /var/log/delegate
$ sudo mkdir /etc/deledate
【起動/終了用スクリプトの作成】
起動、終了用のスクリプトを作成します
$ sudo vim /etc/rc.d/init.d/delegate
\#!/bin/sh
\#
\# chkconfig: 35 90 10
\# description: delegated ftp proxy
\# processname: delegated
\# config: /etc/delegate/*.confDELEGATE=/usr/local/delegate/bin/delegated
CONFDIR=/etc/delegate
DGROOT=/var/delegateif [ ! -x $DELEGATE ]; then
echo -n $”$DELEGATE does not exist.”; warning; echo
exit 0
fiif [ ! -r $CONFDIR ]; then
echo -n $”$CONFDIR does not exist.”; warning; echo
exit 0
fiRETVAL=0
start() {
echo -n $”Starting up Http DeleGate daemon: ”
for CONFIG in $CONFDIR/*.conf ; do
$DELEGATE DGROOT=$DGROOT +=$CONFIG
echo
done
return 0
}stop() {
echo -n $”Shutting down Http DeleGate daemon: ”
for CONFIG in $CONFDIR/*.conf ; do
$DELEGATE DGROOT=$DGROOT +=$CONFIG -Fkill
echo
done
return 0
}restart() {
stop
start
}\# See how we were called.
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo “Usage: $0 {start|stop|restart}”
exit 1
esacexit 0
【ログローテート設定】
logrotate.dに、ログのローテート設定をします
$ vim sudo:/etc/logrotate.d/delegate
/var/log/delegate/ftp.log /var/log/delegate/pop.log /var/log/delegate/smtp.log /var/log/delegate/errors.log /var/log/delegate/stdout.log /var/log/delegate/0 {
missingok
rotate 7
compress
delaycompress
notifempty
copytruncate
create 0600 root:root
}
【SMTP設定】
SMTP用の設定ファイルを作成します
$ vim sudo:/etc/deledate/smtp.conf
-P8025
SERVER=smtp://smtpserver:587/
MYAUTH=”username:password:smtp:smtpserver”
REAHABLE=”smtpserver”
RELIABLE=*
LOGFILE=/var/log/delegate/smtp.log
【ファイアウォール設定】
8025番のポートを開きます
$ vim sudo:/etc/sysconfig/iptables
… 以下を追記
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8025 -j ACCEPT
iptablesの再起動
$ sudo /etc/rc.d/init.d/iptables restart
【サービスの起動と、自動起動設定】
サービスを起動します
$ sudo /etc/rc.d/init.d/delegate start
サービスの自動起動設定をします
$ sudo chkconfig delegate on
【確認】
telnetコマンドから、8025番ポートにアクセスします
$ telnet localhost 8025
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
220 servername ESMTP Postfix
【参考】
ref. DeleGate Home Page