ban4ipインストールしてみました

オープンソースアンカンファレンス金沢2016でT.Kabuさんからのご紹介のあった
fail2banをやめてBan4ipにしませんか?
を早速試してみました。
ApacheやSSH、postfix、dovecot等のログを解析して失敗を検知した接続元のIPアドレスをiptablesに書き込みしてフィルタリングするデーモンになります。
IPv6にも対応しているところが優れています。
CentOS7の環境でしたが、問題なく導入でき1日間で17回BANできています。
インターネット環境にサーバを公開するということは常に攻撃にさらされていると感じました。
自動BANツールを導入していない方はぜひ導入してみるとよいと思います。
なお、サーバを再起動する際には、banした設定が消えてしまうので /sbin/service iptables save を忘れずに!

mbox形式のデータをMaildir形式に変換する

サーバ移行作業中に誤ってメールをmbox形式で/var/spool/mail/(username) で受信してしまっており、Maildir形式に移行する必要が発生した。
優れたツールがあったので、紹介しておく。
wget http://perfectmaildir.home-dn.net/perfect_maildir/perfect_maildir.pl -O /usr/local/bin/perfect_maildir.pl
cd /usr/local/bin/
chmod u+x perfect_maildir.pl
./perfect_maildir.pl /home/(username)/Maildir < /var/spool/mail/(username) >> /tmp/migrate-maildir.log 2>&1
root権限での実行を想定しています。
上記を実行すると、/tmp/migrate-maildir.log には、
Inserted NNN messages into maildir /home/(username)/Maildir/ in N seconds
というログが表示され、実際にNNN件のメールデータが移行されています。

Postfix + POP before SMTP

SMTPの認証にPOP before SMTPを利用する機会は減ってきていると思うが、過去の互換性から利用を継続しなければならない場合も多い。
Cent OSにて導入をするためには、
pop-before-smtp-1.41-2.el5
compat-db-4.2.52-5.1
のRPMパッケージを導入したうえで、
pop-before-smtp-conf.pl, Postfix の main.cf を設定することとなる。
設定方法は、Fedora CoreでPostfixとDovecotでPOP before SMTPが参考になる。

Mailmanのデータを移行する

メーリングリストソフトであるMailmanを新しいサーバーにインストールしなおしたうえで、データだけを移行する場合には、次のディレクトリをコピーする。
/etc/mailman/
/var/lib/mailman/
移行が終わったら、正しく移行できていることをコマンドラインから確認する。
#登録済みメーリングリストを確認する
/usr/lib/mailman/bin/list_lists
#ml-testメーリングリストのメンバーを確認する
/usr/lib/mailman/bin/list_members ml-test
また、メーリングリスト管理インターフェイスとしてApacheなどの設定ファイルにも定義をしている場合には、/etc/httpd/conf.d/*.conf の移行を行う必要がある。

HELOホスト名を変更する方法

Helo command rejected: Host not found;とmessageログに記録されている場合には、送信先SMTPサーバーにおいてHELOホストがDNSに登録されていないためにおこる。
通常は、HELOホスト名はhostnameに記述されたホスト名が使われるがこのホスト名をHELOコマンドで使用したくない場合には、Postfix のセキュリティ対策に記載があるようにmain.cf に「smtp_helo_name」のパラメータを付加してpostfixサービスを再起動することで変更ができる。

SpamAssassinのメモリ使用量が異常

今日突如SpamAssassinのメモリ使用量が1GBを超えてスワップをしてしまい、サーバーがダウンしてしまった。
最近はメールの受信件数がかなり多くなっていたことが気になっていたが、さすがにここまでになるとは思わなかった。
いろんなサイトを参照させていただき、有用となる情報をまとめて対応してみた。
メーリングリストより・・・
/etc/mail/spamassassin/local.cf にて
bayes_expiry_max_db_size 1000000
bayes_auto_expire 0
を追加してspamassasinを再起動する。
SpamAssassin によるスパムメール対策より・・・
/etc/procmailrc にて
:0fw
*!^X-Spam.*
|spamassassin
となっている場合には
:0fw
*!^X-Spam.*
| /usr/bin/spamc
として起動するプログラムをspamcに変更する。

匿名転送メールサービス ~ Alias Mail

以前このブログで20分間だけ使える使い捨てメールアドレスがすぐに作成できる「使い捨てメール」というものを照会したが、余り使い勝手がよくなかったので、実際にMail_mimeDecodeを使って転送メールサービス「Alias Mail」を作ってみた。
まだmessage/rfc822などのcontent-typeが処理できないなどの問題はあるものの、大部分のメールは正しく転送されるように処理できていると思う。
転送期間は1日、3日、5日、1週間、1ヵ月から選択することができ、必要に応じて転送されたメールの本文ヘッダにあるリンクから転送期間を延長することができるようにしてあります。
もし良かったら使ってみてください。そしてご意見や改善点などありましたらコメント入れていただけますとうれしいです。
http://kataude.jp/alias_mail/

postfixでバーチャルドメイン運用

/etc/postfix/main.cf のmydomainにabc.comが定義されており、hogehoge@def.com でもhogehoge@abc.com と同じように abcユーザーのメールボックスに入ってよい場合
⇒/etc/postfix/main.cf のmydestination に def.com を追加する
ユーザーアカウントならびにドメインごとに異なる メールボックスに配送する必要がある場合。ももしくは、/etc/postfix/main.cf のmydomainにドメインが定義されて場合
⇒/etc/postfix/main.cf に
virtual_alias_maps = hash:/etc/postfix/virutal
と定義した上で、
/etc/postfix/virtual に
ドメイン名 anything
メールアドレス 配送先アカウント
という記述を行う。
なお、
@ドメイン名 配送先アカウント
と記述すると該当ドメインにおいてメールアドレスが定義されていないものは指定されたアカウントへ配送できる。

sendmailで複数ドメイン運用

あまりやりたくない運用だけれども、やらざるを得ないときもあるということで設定するための方法は以下のとおり。
1./etc/mail/local-host-namesにローカル配送するためのドメインを記述する
aaa.com
のような感じ。この設定を変更した場合には、サービスの再起移動が必要。
2./etc/mail/virtusertableにエイリアスを設定する。
たとえば、xxx@aaa.com宛てのメールを zzz@bbb.com に転送するときは
xxx@aaa.com zzz@bbb.com
とする。
3.makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable を実行して、登録内容を更新する。なお、virtusertableを変更してmakemapしたらサービスの再起動は不要。 ちなみにsendmailのキューは /var/spool/mqueue にたまるので、うまくメールが受信できないようであれば、トラブルシュートの手段のひとつとして、ここにたまっていないか確認する必要がある。