メールアカウント乗っ取り系のSPAM送信

ある日、メールの送信失敗率が急上昇した。
qmailsend-week-mod
(上記画像は対処して落ち着いた後に取ったもの)

慌ててメールキューを確認するとエラーメールが大量に・・・

調べてみると、全てある1ユーザに関するもの。
ログを確認していくと、そのユーザが、さまざまなIPアドレスからSMTP認証をかけてきて、認証に成功した上でSPAM送信が行われているじゃないですか。

Jul 22 18:47:21 mailserver qmail: 1374486441.012502 starting delivery 77399: msg 90220 to local example.com-hello@example.com
Jul 22 18:47:21 mailserver qmail: 1374486441.012529 status: local 2/100 remote 0/50
Jul 22 18:47:21 mailserver spamd[937]: spamd: connection from localhost.localdomain [127.0.0.1] at port 43120
Jul 22 18:47:21 mailserver spamd[937]: spamd: handle_user unable to find user: 'hello@example.com'
Jul 22 18:47:21 mailserver spamd[937]: spamd: processing message <201307220947.r6M9lLNe013087@mailserver.example.com> for hello@example.com:109
Jul 22 18:47:26 mailserver spamd[937]: spamd: clean message (0.0/18.0) for hello@example.com:109 in 5.9 seconds, 2050 bytes.
Jul 22 18:47:26 mailserver spamd[937]: spamd: result: . 0 - AWL,BAYES_20,CONTENT_TYPE_PRESENT,INVALIDYAHOOJP,ISO2022JP_BODY,ISO2022JP_CHARSET,SUBJECT_NEEDS_ENCODING,SUBJ_ILLEGAL_CHARS,URI_HEX scantime=5.9,size=2050,user=hello@example.com,uid=109,required_score=18.0,rhost=localhost.localdomain,raddr=127.0.0.1,rport=43120,mid=<201307220947.r6M9lLNe013087@mailserver.example.com>,bayes=0.090684,autolearn=disabled
Jul 22 18:52:46 mailserver vpopmail[17115]: vchkpw-submission: (PLAIN) login success hello@example.com:83.242.101.27
Jul 22 18:52:57 mailserver qmail: 1374486777.611039 new msg 90219
Jul 22 18:52:57 mailserver qmail: 1374486777.611077 info msg 90219: bytes 1364 from <hello@example.com> qp 17121 uid 103
Jul 22 18:52:57 mailserver qmail: 1374486777.638528 starting delivery 77421: msg 90219 to remote ~@~
Jul 22 18:52:57 mailserver qmail: 1374486777.638582 status: local 0/100 remote 1/50
Jul 22 18:52:57 mailserver qmail: 1374486777.641128 starting delivery 77422: msg 90219 to remote ~@~
Jul 22 18:52:57 mailserver qmail: 1374486777.641155 status: local 0/100 remote 2/50
Jul 22 18:52:57 mailserver qmail: 1374486777.641173 starting delivery 77423: msg 90219 to remote ~@~
Jul 22 18:52:57 mailserver qmail: 1374486777.641192 status: local 0/100 remote 3/50
Jul 22 18:52:57 mailserver qmail: 1374486777.641314 starting delivery 77424: msg 90219 to remote ~@~
Jul 22 18:52:57 mailserver qmail: 1374486777.641339 status: local 0/100 remote 4/50
Jul 22 18:52:57 mailserver qmail: 1374486777.641518 starting delivery 77425: msg 90219 to remote ~@~
Jul 22 18:52:57 mailserver qmail: 1374486777.641543 status: local 0/100 remote 5/50

そう、そのユーザのメールアカウント情報がどこかで漏れ、SPAMシステムに投入されたようなのです。

とりあえず、該当アカウントのパスワード変更し、メールキュー内のエラーメール群を消去したあと、対処開始。

確認すると、約24時間の間に、880のIPアドレスからSMTP認証のloginが行われているという事態。
また、ほとんどのIPアドレスからは1回しかアクセスがなかったので、相当大規模なシステムである模様。

# cat /var/log/maillog.? |grep vchkpw-submission|grep hello@example.com|grep succ|awk '{ print $10 }'|awk -F: '{ print $2 }' |sort|uniq -c|sort|wc
    880    1760   19476
# cat /var/log/maillog.? |grep vchkpw-submission|grep hello@example.com|grep succ|awk '{ print $10 }'|awk -F: '{ print $2 }' |sort|uniq -c|sort | tail
      2 93.85.128.230
      2 94.156.244.75
      2 94.170.246.170
      2 94.180.194.222
      2 95.52.132.238
      3 178.125.185.161
      3 46.118.66.80
      3 93.175.125.67
      3 93.78.3.92
      3 95.42.37.153
#

そんな確認を行っていると、30分が経過。
すると、いままで出ていた「password fail」のログが消えた。
そう、どうやらSPAM送信システム側で、このサーバでは送れない、という認識がされたようだ。

これで終わりかな?と思ったのですが、その後も12時間ごとに10回のメール送信を試みてる形跡が確認されています。

Jul 24 07:11:42 mailserver vpopmail[32749]: vchkpw-submission: password fail hello@example.com:91.225.163.32
Jul 24 07:16:21 mailserver vpopmail[1287]: vchkpw-submission: password fail hello@example.com:89.74.114.28
Jul 24 07:20:57 mailserver vpopmail[2147]: vchkpw-submission: password fail hello@example.com:192.162.224.10
Jul 24 19:13:23 mailserver vpopmail[8339]: vchkpw-submission: password fail hello@example.com:94.139.211.248
Jul 24 19:18:54 mailserver vpopmail[9449]: vchkpw-submission: password fail hello@example.com:178.120.193.67
Jul 24 19:24:18 mailserver vpopmail[10359]: vchkpw-submission: password fail hello@example.com:178.127.107.5
Jul 24 19:29:58 mailserver vpopmail[11422]: vchkpw-submission: password fail hello@example.com:114.41.229.41
Jul 24 19:35:23 mailserver vpopmail[13866]: vchkpw-submission: password fail hello@example.com:178.122.175.143
Jul 24 19:40:48 mailserver vpopmail[14894]: vchkpw-submission: password fail hello@example.com:46.211.194.44
Jul 24 19:46:03 mailserver vpopmail[16036]: vchkpw-submission: password fail hello@example.com:91.230.30.142
Jul 24 19:56:39 mailserver vpopmail[18000]: vchkpw-submission: password fail hello@example.com:176.115.59.82
Jul 24 20:02:02 mailserver vpopmail[19925]: vchkpw-submission: password fail hello@example.com:37.215.9.145
Jul 24 20:12:06 mailserver vpopmail[21887]: vchkpw-submission: password fail hello@example.com:115.187.55.14

いまさらqmailのパッチ情報収集 2012/02/17

新しい情報があったので「qmailの情報収集 2019/08/26」で更新しました。
なお、うちはqmail+vpopmailからpostfix+iredmailに移行しました。


実はqmail+vpopmail環境をまだ運用していたりする。
久々に使っているパッチを見直してみているところ。

netqmail-1.06_qregex_spf_auth_badremote-patch
うちで使ってるqmailのパッチ集。

netqmail-qregex-20040601-vrt.patch
qmail-1.03-concurrencydomain.patch
qmail-103-dns.patch
qmail-badremotehost.patch
qmail-date-localtime.patch
qmail-spf-rc5.patch

上記のうち、netqmail-qregex-20040601-vrt.patchは以下のパッチから構成されている。

smtpd-auth
qrefex-20040601
validrcptto

で、この環境に当たってるパッチを最新の状況に合わせようかな、と思って調査開始。

qmail-1.03 & Netqmail-1.06 / DomainKeys Integration Howto v20081001.02
DomainKeysに対応させるための手順

qmail-isp
上記ページの作者が公開しているqmail-1.03に対するいろんな修正パッチ集
最新は 2010062801版。
netqmail-1.06と同等のパッチも含まれている。
このパッチ集には qmail-dkは含まれない。

qmail-1.03.errno.patch   (netqmail-1.0.6同等)
qmail-local-sjoelund.patch  (netqmail-1.0.6同等)
qmail-1.03-0.0.0.0-0.2.patch  (netqmail-1.0.6同等)
qmailqueue-patch  (netqmail-1.0.6同等)
qmail-sendmail-flagf.patch  (netqmail-1.0.6同等)
qmail-isoc.patch  (netqmail-1.0.6同等)
qmail-bounce.patch
oversize-dns.patch
qmail-1.03-maildir-uniq.patch
doublebounce-trim.patch
qmail-smtpd-relay-reject
patch-qmail-1.03-rfc2821.diff
qmail-smtpd.c.size.diff
nullenvsender-recipcount.patch 1.5 with Sami Farin fix
netscape-progress.patch
outgoingip.patch
tarpit.patch
qmail-smtpd-maxrecipients.patch
ext_todo-20030105.patch (silly qmail syndrome)
qmail-smtpd-auth-0.4.3
qmail-1.03-mfcheck.4jk.patch
qmail-smtpd-chkusr-1.0.patch (with several customizations)
qmail-spf-rc5.patch
qregex-20060423.patch
qmail-1.03.originip-field.patch

内容を比較したところ、うちで使っているnetqmail-1.06_qregex_spf_auth_badremote-patchよりqregexのバージョンが新しかった(20040601→20060423)。
qmail-todoというプログラムを追加するパッチが含まれているようだが、とりあえず、それはスルー。

qmail 1.03 all in one (aio) patch version 16 [2008-08-11]
いろいろ含んでいる修正パッチ集 qmail-aio
glaylistとか、遅延応答とかをサポートしているようなので気になるところ。
ただし、2012/02/17現在、パッチ本体がダウンロードできないため、細かいパッチ情報が不明。

HDE Controller
以前、HDE Controller 6.0評価版を入手したところ、qmailを使用していた。
qmail-1.03-34HDE.src.rpm

auto_uids.c                           qmail-default-delivery
badrcptto.patch                       qmail-dk.patch
brand.c                               qmail-linux.csh
ctype.c                               qmail-linux.sh
dot-forward-0.71.tar.gz               qmail-maildir++.patch.fixed
fastforward-0.51.tar.gz               qmail-maildir.patch
patch-qmail-1.03-rfc2821.diff         qmail-smtpd-auth-0.30-iwm.patch
qmail-1.03-linux.init                 qmail-smtpd-auth-0.31-smtpauth.patch
qmail-1.03-message_id.patch           qmail-smtpd-auth-0.31.tar.gz
qmail-1.03.errno.other-program.patch  qmail-smtpd-auth-degrade.patch
qmail-1.03.errno.patch                qmail-smtpd-newline.patch
qmail-1.03.ids.patch                  qmail-smtpd-relay-reject
qmail-1.03.install.patch              qmail-smtpd.init
qmail-1.03.tar.gz                     qmail-smtpd.init.pl
qmail-103-bigdns.patch                qmail-smtpd.init.sub
qmail-aliases                         qmail-spf.patch
qmail-date-localtime.patch            qmail.spec
qmail-default                         qmailqueue-patch

基本、他のパッチで見たことあるやつばかりだった。
qmail-dk.patchもqmail-dk-0.54-auth.patch同等品のようだ。

・玉川大学ICT基盤推進課 DKIM運用情報
qmail-1.03.tar.gz + spamcontrol-216_tgz.binをベースに、DKIM運用を行っている。
IndiMailで配布しているdkimパッチを使用している。

IndiMailnetqmailパッチ群
玉川大のサイトに情報があったので調べてみて発見。
IndiMail自体はメール統合システム。雰囲気としてはqmail-ispと同じような機能を持っていそう。
単独では、qmail-dkim, qmail-greydが利用できそう。
2011/07に更新があったりするので、まだメンテナンスされているようだ。

・Brandon’s Blog: DKIM and DomainKeys for qmail
DomainKeysとDKIMの両方に対応するパッチ。2009年リリース。
qmailタグを見ると、いろんなパッチを作成している。

qmail Combined Patch Details
パッチ集。2010/02/14リリース。
vpopmail環境でDovecotを使えるらしい
その場合の動作概念図(pdf)。
他の人も手順を書いていたりする。Dovecot IMAP Server and Daemontools

Dovecot側を調べてみるとAuthDatabase-VPopMailという情報が出てくる。

現状、courier-imap/pop3を使っているが、最新バージョンではvpopmail環境に対応していないので、乗り換えを検討してもようかと考え中。

とりあえず、そんな状況

— 2012/06/06 追加 —
・fehcomのSPAMCONTROL
玉川大学で使ってる「spamcontrol」部分のこと
netqmailに対するパッチではなく、オリジナルのqmail-1.03に対するパッチとしている。
ESMTP、badmailfrom,badrcptto,
SMTP auth, SMTPS/STARTTLS
QMAILQUEUEに対応らしい

— 2019/08/26 追加 —

notqmail

すっかり更新が止まってしまったnetqmailをもう一度やり直してる感じのもの。

netqmailがv1.0.6だったので、このnotqmail はv1.0.7を名乗っている。

courier-imapをアップデートしようと思ったら・・・

今使っているqmail+vpopmail+courier-imapを最新版にしようと、依存性とか確認してみた。

すると・・・courier-imapが内部的に使う認証モジュールcourier-authlibにて問題発生。
現状は「0.63.0」ですが、「0.60.4よりvchkpwモジュールが削除」とのこと・・・
vchkpwモジュールというのがvpopmailと連動するためのモジュールなのでアップデート不可。

・・・・・・・・そういえば、そうでした。
すっかり忘れていましたよ^^;;;

しっかし、そうなると、代替策をどうするかなぁ・・・
LDAPモジュール or mysqlモジュールを使うようにいろいろシステム変更をする、ということになるのかな

自ホスト宛のメールだけど他のメールサーバに飛ばしたい

自ホスト宛の、通常だとローカル配送になるようなメールだけど、自分では受け取らず、他のメールサーバに飛ばしたい、という時に、sendmailにする設定内容。

sendmailの場合

/etc/mail/sendmail.mc の最後に以下を追加する。

define(`LOCAL_RELAY',`smtp:送付先サーバ名')
dnl LOCAL_USER(`root')
dnl define(`MAIL_HUB',`smtp:送付先サーバ名')
dnl FEATURE(`stickyhost')dnl

この設定にした場合
・ユーザ名@自ホスト のメールは送付先サーバ名に指定したところに送付
・ユーザ名@他ドメイン のメールは、普通にDNSのMXを見て配送

gmailとかにメールを委託している時にも使えることかと思われる。