DelegateによるFTP/SMTP/POPプロキシの構築
ソースコードの入手〜コンパイル
公式から落としてきてmake
wget ftp://ftp.delegate.org/pub/DeleGate/delegate9.8.1.tar.gz tar zxvf delegate9.8.1.tar.gz cd delegate9.8.1 make
インストール
srcの中にdelegatedってのが出来てるので適当なところにコピー。
cp src/delegated /usr/sbin
ついでにいくつかディレクトリをつくってやる。
ログは/var/logにまとめておきたいのでシンボリックリンクを使った。
mkdir -p /var/delegate/log chown -R nobody:nobody /var/delegate/log ln -s /var/delegate/log /var/log/delegate mkdir /etc/delegate
設定
FTP/SMTP/POPそれぞれに設定ファイルを作っておいた。
ここでは仮に FTP/SMTP/POPサーバ 192.168.1.2 とした。
/etc/delegate/ftp.conf
-P21 SERVER=ftp RELIABLE=192.168.1.0/24 LOGFILE=/var/log/delegate/ftp.log PROTOLOG='' MOUNT="/* ftp://192.168.1.2/*"
/etc/delegate/pop.conf
-P110 SERVER=pop://192.168.1.2 REACHABLE=192.168.1.0/24 RELIABLE="*" LOGFILE=/var/log/delegate/pop.log PROTOLOG=''
-P25 SERVER=smtp://192.168.1.2 REACHABLE=192.168.1.0/24 RELIABLE="*" LOGFILE=/var/log/delegate/smtp.log PROTOLOG=''
起動スクリプトをつくる
プロトコル毎に起動スクリプトをつくったり、それを実際に使ったりするのはめんどくさかったので、1つのスクリプトで済むようにしてみた。ただ、これだと設定を変更したり追加したりしたとき、全部再起動することになるのでそれだと困る場合は設定ファイル毎に書いた方が良いと思う。
vi /etc/init.d/delegated chmod 700 delegated
#!/bin/sh # # chkconfig: 35 90 10 # description: delegated ftp proxy # processname: delegated # config: /etc/delegate/*.conf DELEGATE=/usr/sbin/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
サービス起動
service delegated start chkconfig delegated on
logrotateの設定
vi /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 }