作成動機 サポート先にログインする必要が出たとき、そのサポート先のメールサーバをうちで預かっている場合にはmaillogから該当ユーザのpop3の記録からipアドレスを特定してログインを行っている(該当サポート先は固定のグローバルIPアドレスを持っていない)。DDNSを利用してネームサーバにエントリを行ってhogehoge.local で接続できるようにしておけば、作業が楽。
単純なサンプルを作成してみた。
iptouroku.sh
#!/bin/sh
USER=$1
IP_ADDRESS=$(grep “pop3-login: Login: $USER” /var/log/maillog | tail -1 | awk -F : ‘{print $8}’ | sed ‘s/]//g’)
echo -e “update delete $USER.local\n” | /usr/bin/nsupdate
sleep 1
echo -e “update add $USER.local 3600 A $IP_ADDRESS\n” | /usr/bin/nsupdate
引数にユーザ名を与えてやればそのユーザの最終ログインからIPアドレスを取得して該当ドメインにユーザ名.ドメインとして登録する。
例 sh iptouroku.sh hogehoge
あとはこれをcronで適当な間隔で動かすだけ。
追記 日曜日4時にloglotateでメールログが更新されて該当がない場合消えてしまうのでヌル処理追加
USER=$1
IP_ADDRESS=$(grep “pop3-login: Login: $USER” /var/log/maillog | tail -1 | awk -F : ‘{print $8}’ | sed ‘s/]//g’)
if [ -n $IP_ADDRESS ] ; then
echo -e “update delete $USER.local\n” | /usr/bin/nsupdate
sleep 3
echo -e “update add $USER.local 3600 A $IP_ADDRESS\n” | /usr/bin/nsupdate
fi