Delegateを利用したSMTPリレー(SMTP-Auth)

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/*.conf

DELEGATE=/usr/local/delegate/bin/delegated
CONFDIR=/etc/delegate
DGROOT=/var/delegate

if [ ! -x $DELEGATE ]; then
echo -n $”$DELEGATE does not exist.”; warning; echo
exit 0
fi

if [ ! -r $CONFDIR ]; then
echo -n $”$CONFDIR does not exist.”; warning; echo
exit 0
fi

RETVAL=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
esac

exit 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