HELO詐称の迷惑メールをPostfixで破棄

メール使ってる人の多くはおそらく毎日大量に迷惑メールを受けている筈。Gmailなら迷惑メールを除去していると思うのでそうでもないのかな?
うちのメールサーバはRspamdを使っているので殆どの迷惑メールは自動識別され隔離フォルダに入るようになっている。Gmailのように迷惑メールフィルタが優秀なら迷惑メールと判断したら自動削除というのもアリなのだろうけど、False Positive(誤検知)が怖い。迷惑メールが非迷惑メールと判断されるFalse Negativeは許せるけど、例えば重要なメールが迷惑メール扱いにされて消されるというのはあってはならない。だから妥協して迷惑メールと判断したら削除ではなく隔離ね。

ところで、下のような題名の日本人向け迷惑メールがある。(最近の)

  • ★☆★☆★ WOWWOW ★☆★☆★
  • [ 緊急速報 ]
  • 【発送】ご注文の商品について
  • 詐欺ばっかりの業者にうんざり

皆がこのようなメールを受信しているとは限らないけど、見たことあるって人は多い筈。
他の特徴としては差出人のメールアドレスが下の様なの。

[8文字前後のランダム英字] @ [16〜24文字程度のランダム英字] .jp 

本文の文字コードがメールヘッダの文字コード指定と違っているのでメーラーによっては本文が読めないなんてのも。

そして、最大の特徴はメールヘッダにある。

Received: from customer.worldstream.nl (unknown [xxx.xxx.xxx.xxx])

Received fromにcustomer.worldstream.nlって書かれてるのね。
以前から迷惑メール送信に使われるホスト名なので見たことある人も多い筈。
Received fromに書かれているIPアドレスが customer.worldstream.nl ではないので念の為。というか、騙ってるだけ。 worldstream.nl は実在するドメインだが、 customer.worldstream.nl はIPアドレスを引けないホストなので存在しないと考えて構わない。つまり customer.worldstream.nl を騙るホストがメール送ってきたら、それはおそらくボットとかそんなの。
これは100%迷惑メールと判断して良い。100%迷惑メールであるならばRspamdなどの迷惑メールフィルタに渡して判断させるまでもなくPostfixで受けた瞬間に削除する方が良いかな。
これらのIPアドレスを個別にBANするのは無駄。

Postfixの設定

/usr/local/etc/postrix/main.cf (FreeBSDのports/pkgのDir構成)
header_checks = regexp:/usr/local/etc/postfix/header_checks

おそらく真面目に設定したPostfixならheader_checks行は既に存在する筈。既存の設定がregexp指定になってない場合は下のファイルは正規表現を使わないものに読み替えて。

/usr/local/etc/postfix/header_checks (追記1行)
/^Received: from customer\.worldstream\.nl/ DISCARD

REJECT(拒否)ではなくDISCARD(破棄)すること。
正規表現を使っている場合はpostmapでDBファイルを作成しない。
正規表現を使うことにした場合にすでにDBファイルが存在するならheader_checks.dbを削除。
そうでなければDBファイルを作成。

# postmap header_checks

設定が終わったらPostfixに設定再読込をさせる。

# service postfix reload

または、

そもそもheloでcustomer.worldstream.nlを詐称してくるのでそれを利用して拒否・破棄する。

/usr/local/etc/postfix/main.cf (変更・1行挿入)
1
2
3
4
5
6
7
8
smtpd_delay_reject = yes   #この行を忘れずに
smtpd_helo_required = yes
smtpd_helo_restrictions =
    permit_mynetworks,
    reject_invalid_hostname,
    reject_non_fqdn_hostname,
    check_helo_access hash:/usr/local/etc/postfix/helo_access,   #←これ
    permit

/usr/local/etc/postfix/helo_access (追記1行)
customer.worldstream.nl   DISCARD

REJECTではなくDISCARDを指定する。理由は後述の「確認してみる」のところに。

helo_accessファイルを編集したらDBファイルを作成・更新する。

# postmap helo_access

設定が終わったらPostfixに設定再読込をさせる。

# service postfix reload

確認してみる

helo_accessにHELOをREJECTで指定した場合
% telnet mx.example.com 25  メールサーバに接続
Trying 2001:xxxx:xxxx:xxxx::1000...
Connected to mx.example.com.
Escape character is '^]'.
220 mx.example.com ESMTP Postfix
HELO customer.worldstream.nl Reject登録済ホストを詐称
250 mx.example.com
MAIL FROM: hage@example.com 差出人を指定
250 2.1.0 Ok
RCPT TO: hoge@example.com 宛先を指定
554 5.7.1 : Helo command rejected: Access denied
QUIT   接続終了
Connection closed by foreign host.

メールを送信しようとしたら理由とともに拒否される。正当な送信者に対して拒否理由を知らせるのは良いことだが、スパマー(ボット)に拒否理由や回避方法のヒントを知らせる必要はない。

helo_accessにHELOをDISCARDで指定した場合
% telnet mx.example.com 25  メールサーバに接続
Trying 2001:xxxx:xxxx:xxxx::1000...
Connected to mx.example.com.
Escape character is '^]'.
220 mx.example.com ESMTP Postfix
HELO customer.worldstream.nl Discard登録済ホストを詐称
250 mx.example.com
MAIL FROM: hage@example.com 差出人を指定
250 2.1.0 Ok
RCPT TO: hoge@example.com 宛先を指定
250 2.1.5 Ok
DATA データ(メール本文)入力を宣言
354 End data with <cr><lf>.<cr><lf>
test メール本文
. メール本文終了
250 2.0.0 Ok: queued as 58BC818E0137
QUIT 接続終了
221 2.0.0 Bye
Connection closed by foreign host.

送信者には正常に送信できたように見える。

このときのPostfixのログ
Jul 23 21:47:51 hoge postfix/smtpd[76966]: NOQUEUE: discard: RCPT from spammer.example.com[2004:yyyy:yyyy:yyyy::yyyy]: <customer.worldstream.nl>: Helo command triggers DISCARD action; from=<hage@example.com> to=<hoge@example.com> proto=SMTP helo=<customer.worldstream.nl>

希望がかなってしっかり破棄できている。

なんでこんな初歩的なことを書くかって?、Rspamdとか使い始めると依存しすぎて意外と忘れがちかなと。

軽量LinuxのBohdi Linuxを触ってみた

Bohdi Linux

以前から気になっていたBodhi Linuxを触ってみた。

Bodhiはボーディで仏教用語の菩提(ぼだい)の語源。Bohdi LinuxのロゴはBodhi Leaf (印度菩提樹の葉)。印度菩提樹は日本のお寺などにある菩提樹とは全然別の種類なんだそうな。

ベースはUbuntuでデスクトップ環境はMoksha(モークシャ=解脱 げだつ、これも仏教用語)。Ubuntuのナレッジは使えるだろうけどMokshaは未知なので手探りになる。
最小構成は500MHzのCPU、256MBメモリ、5GBストレージ。推奨構成は1GHzのCPU 512MBメモリ、10GBストレージ。 イメージファイルは64ビット用のStandardと32ビット用のLegacyが提供されている。Legacyは非PAE対応なのでかなり古いPCでも使えそう。
それと、標準ではソフトウエアが必要最低限しか入らないのでイマドキの普通程度に充実させるためのAppPack。

一応、最新は4.5.0だが、今回はもうすぐリリースされるであろう5.0.0のRC版を試している。

インストール

ダウンロードしたイメージファイルをDVD-Rなどに焼いてPCにセット。

ライブモード(セッション)を起動させる。
OSが起動するとブラウザが開いてクイックガイトが表示されるが、ライブセッションではクイックガイドの内容は意味が無いのでブラウザを閉じる。
左下のランチャーの2つ右にある菩提樹の葉のアイコンをクリックでインストーラーを起動させる。

最初の画面が言語選択。「日本語」を選択する。
キーボードレイアウトの選択は日本語配列キーボードなら「日本語」を選択、「日本語-日本語(hoge)」は選ばない。(特殊な日本語キーボードを除く)。
ネットワーク(無線LAN)設定も行う。
これらの内の幾つかの設定はインストールするOSにも引き継がれるので適切に設定する。(5.0.0RC版では表示言語は引き継がれなかった)
このあとはイマドキの簡単系Linuxのインストールと変わらない。

インストールが終わったらDVD-Rなどのメディアを抜いてPCを再起動。

Bohdi Linuxを触ってみる 1
インストール直後。ただし、ブラウザで開くクイックガイドは消している。

日本語入力の設定

以下、「ランチャー」はデスクトップ左下隅のアイコン(Windowsのスタートボタン相当)とする。

Bohdi Linuxを触ってみる 2
1. ランチャー → 設定 → モジュールを開く → 「settings(設定)」タブを選択 → 言語に緑丸を付ける。

2. ランチャー → アプリケーション → システムツール → Terminologyを開く。

$ sudo -s
# apt-get update 
# apt-get -y dist-upgrade
# apt-cache search mozc    ←mozc関連のパッケージ名を検索
# apt-get install fcitx-mozc mozc-utils-gui
# exit
$ exit

依存関係のパッケージも含めて(おそらく山盛り)インストールの許可を求められるので Y を押す。
これだけでも最低限日本語入力はできる筈。
実用を目指すなら他に日本語フォントを幾つか入れた方が良いと思う。(省略)

Bohdi Linuxを触ってみる 3
ランチャー → 設定 → 設定パネルを開く → 「Language(言語)」タブを選択 → Input Method Settings(入力方式の設定)

Bohdi Linuxを触ってみる 4
入力方式の選択で[fcitx]を選択 → [選択した入力方式に設定する]ボタンを押す。

上の画像では引き続きFcitxの設定をやってるように見えるが、システムを再起動する。
ランチャー → システム → 再起動、 またはデスクトップ右下の

Fictxの設定を行う。システム再起動後はデスクトップの最下段にあるパネルに(キーボードのアイコン)が表示される筈なのでそれを右クリック。下から3番めのConfigureを選択。
「入力メソッドの設定」窓が開く。リスト表示の一番上がKeyboard-Japaneseで2番めがMozcであることを確認。違ってたら変更する。間違ってMozcを一番上にしないこと。(これは画像無しでスンマセン)。
上部の「全体の設定」タブを選択する。
例によって「日本語入力」←→「英数字入力」の切り替えキーを好みに変更する。(ここ数回同じのを書いてるし、Fcitxの設定は共通なので省略)

Bohdi Linuxを触ってみる 5
同様にデスクトップ最下段のパネルの(キーボードのアイコン)を右クリック。Mozc Tool → Configuration Toolを選択する。

Bohdi Linuxを触ってみる 6
「Mozc プロパティ」窓が開く。日本語変換の設定を行う。上の画像では「かな入力」に変更しているが、これは絶滅危惧種用の設定、普通は初期値のローマ字入力から変更しない。

Bohdi Linuxを触ってみる 7
標準ブラウザはMidori。これは軽量を目指す(非力なマシン)なら良い選択かな。
上の画像はブラウザで日本語を入力してみた例。

テキストエディタ(Windowsのメモ帳相当)はランチャー → アプリケーション → アクセサリ → ePad、これは軽量かもしれないけど日本語入力できないダメなやつ。

感想

Linuxが初めてで先入観が無ければ素直に慣れるだけだと思うけど、他のLinuxを触ってたらだいぶ勝手が違うので面食らうかも。逆にこれで慣れてしまうと他のLinuxで勝手が違うということになる筈だが、それはあまり良いことではないと思う。つまり、変なのでは慣れない方が良いと思う。

アプリケーションのインストールはapt-getに慣れてないとツラすぎる印象。ブラウザから http://bohdilinux.com アプリ検索ページを使う方は検索が殆どヒットしない。 ランチャ → アプリケーション → システムツール → GDebi Package Installer(こちらはインストールしたいパッケージファイルを自分で用意)というのがある。GDebiは初心者は手を出すべきではない筈。正直どちらも使い物にならない。

慣れて自由に使えるようになれば快適なのかもしれないが、ちょっとね・・・
悟りの境地には程遠く。

Up