Postfix header_checksの書き方とメタ文字の意味

4 May 2024

Postfix header_checksの書き方とメタ文字の意味

メタ文字とは、正規表現で特殊な意味を持つ非アルファベット文字をいう。普通の文字と区別するために使う。 表のネタサイトにも書いたが裏でもこのネタ掲載しておく。Postfixの【header_checks】の内容はregexp表現つまり正規表現が正確に書かれてないとスルーされてしまう。 Postfixのheader_checksの記述は一般的な設定をそのまま書いてあるサイトは多いが、設定値のメタ文字の意味を書いてあるサイトは無に等しい。 それもそのはず、正規表現って自分に取っては非常に難しくて未知との遭遇。なんじゃいこの宇宙語ってな感じ。正規表現ってPerlに出てくるんだけど如何にPerlって言語が奥深いかが良くわかる。 そこで自分なりの理解で正規表現メタ文字の説明を書いてみた。ただし見ていただくのはいっこうに構わないが間違っているかもしれないので、ここの説明は自己責任で参考にしてほしい。 以下に自分で設定しているPostfixのセキュリティを担当してる【header_checks】の内容を表す。説明がいるメタ文字は下に意味を書いているのでご理解願いたい。 自分事だが昨今、Fromセクションを偽造する輩が多いので個人的に四苦八苦している。 メールの処理方法の推奨は、本来ではしゃくにさわるので「REJECT」にしたいところが「DISCARD」の方がいいだろう。なぜかというと昨今のスパムメールはひつっこいからである。ドメインも色々変えてくる、単に変えるだけでなく偽造もしてくるのでたちが悪い。したがって、受信したように見せかけて無視する「DISCARD」がいいだろう。しかし、これはみなさんが判断することだろうから個人の判断に任せる。 以下は、記述内容を全て検証したわけでは無いので悪しからず。ただし、抜き打ちだがちゃんと引っかかっているので安心しても良いかと思う。

1.X-Mailerセクション

メーラーが何が使われてるかヘッダーに示されている

「.」は何でもいい一文字(何もなくても良い)と「BLT-TECH_EXEMAIL_1」がマッチするという意味(空文字でも良い)。「/」は必ず一行の終わりに入れる(これはメタ文字ではない)

/^X-Mailer:.BLT-TECH_EXEMAIL_1/    REJECT

「.*」は0個以上の文字列と「Achi-Kochi Mail」がマッチ(0個以上だから空文字でも良い)

/^X-Mailer:.*Achi-Kochi Mail/       REJECT

/^X-Mailer:.*PostMaster General/     REJECT

/^X-Mailer:.*DM Mailer/          REJECT

/^X-Mailer:.*Direct Email/         REJECT

/^X-Mailer:.*Oshirase Mailer/       REJECT

/^X-Mailer:.*IMail/              REJECT

/^X-Mailer:.*Shadow Mail/         REJECT

/^X-Mailer:.IM200./            REJECT

/^X-Mailer:.*Easy DM free/        REJECT

/^X-Mailer:.*Douhou@Mail/        REJECT

/^X-Mailer:.VolleyMail.net./       REJECT

/^X-Mailer:.*@serwer/           REJECT

/^X-Mailer:.*@yousef/           REJECT

/^X-Mailer:.empiricists./         REJECT

/^X-Mailer:.SupperMailer/       REJECT

/^X-Mailer:.AOL/            REJECT

/^X-Mailer:.*Cara Mail/          REJECT

何でもいい一文字(何もなくても良い)と「The Bat!」を含む文字がマッチする

/^X-Mailer:.The Bat!/           REJECT

何でもいい一文字と「GOOD Mailer」と何でもいいその後の文字列もマッチの対象になる

/^X-Mailer:.GOOD Mailer.*/       REJECT

2.Subjectセクション

Subjectセクションは、件名に特定の文字が含まれてる否かをチェックしている

「$」は行の末尾を表す

/^Subject:.*dear valued customers$ / REJECT

/^Subject:.*norton will$ /         REJECT

/^Subject:.*married$ /          REJECT

/^Subject:.*lose we$ /             REJECT

/^Subject:.*Here is that sample$ /     REJECT

/^subject:.*!!!$ /                 REJECT

/^subject:.*?9-9p$ /              REJECT

/^subject:.*Payslip for the month$ /    REJECT

/^subject:.*Tracking Sheet$ /        REJECT

/^subject:.*for printing$ /           REJECT

/^subject:.*Dec Month Bill$ /        REJECT

/^subject:.*Photo from Socorro$ /     REJECT

/^subject:.*Postcard$ /            REJECT

/^subject:.*UGG$ /i              REJECT

/^subject:.*【RayBan】$/           REJECT

/^subject:.*Oakley$/             REJECT

「i」は大文字、小文字は区別しないでマッチする

/^subject:.*[AMERICAN EXPRESS]$ /i  REJECT

/^subject:.*【AMERICAN EXPRESS】$ /i  REJECT

3.Fromセクション

Fromセクションは相手先メールアドレスをチェックする

「#」が「@」以前にあったらマッチする

/^From:.<#.@.*>/               REJECT

「\」はメタ文字にあるので文字の「.」と区別するために「.」以前に記述する。

/^From:.*usa.net/               REJECT

/^From:.*hongkong.com/          REJECT

/^From:.*china.com/             REJECT

/^From:.*asult-newsletter.com/      REJECT

/^From:.*smtp.u-netsurf.ne.jp/      REJECT

/^From:.*shinkimail0@yahoo.co.jp/    REJECT

/^From:.*lva4ii@yahoo.com/        REJECT

/^From:.*amipara.co.jp/          REJECT

/^From:.*dreamwiz.com/          REJECT

/^From:.*1075407075@aol.com/      REJECT

/^From:.*bigfoot.com/            REJECT

/^From:.*canada.com/            REJECT

/^From:.*email.net/              REJECT

/^From:.*wildmail.com/            REJECT

/^From:.*mailcity.com/            REJECT

/^From:.*163.com/              REJECT

/^From:.*hanmail.net/            REJECT

/^From:.*acmemail.net/           REJECT

/^From:.*email.com/             REJECT

/^From:.*earthlink.net/           REJECT

/^From:.*winning.com/           REJECT

/^From:.*legislator.com/          REJECT

/^From:.*xxx.com/              REJECT

/^From:.*umpire.com/            REJECT

/^From:.*2004pharms.com/         REJECT

/^From:.*inkbuys.biz/            REJECT

/^From:.*55555.com/            REJECT

/^From:.*emaga.com/            REJECT

/^From:.*m-bai.com/            REJECT

/^From:.*ugg.com/              REJECT

/^From:.*vsbill.net/             REJECT

/^From:.*bekgdfy.net/           REJECT

/^From:.*ixudnsbxl.cc/           REJECT

/^From:.*internet-census.org/      REJECT

/^From:.*censys-scanner.com/      REJECT

/^From:.*gonganumen.wang/       REJECT

/^From:.*vpass.ne.jp/           REJECT

/^From:.*odzaafh.info/           REJECT

/^From:.*newamazonformail.club/    REJECT

/^From:.*tzhualang.com/         REJECT

/^From:.*aqnnou.com/           REJECT

/^From:.*ngq.com/             REJECT

/^From:.*ksuyzm.org/           REJECT

/^From:.*rzkgfp.com/           REJECT

/^From:.*mailtorakutencard.xyz/    REJECT

/^From:.*kktechno.co.jp/        REJECT

/^From:.*cpvillar.com/           REJECT

/^From:.*viewsnet.jp/           REJECT

/^From:.*aexp.com/            DISCARD

/^From:.*germanint.com/         DISCARD

/^From:.*visa.co.jp/            DISCARD

/^From:.*meijiyasuda.co.jp/       DISCARD

/^From:.*rakuten-card.co.jp/      DISCARD

/^From:.*mobilesuica.com/        DISCARD

/^From:.*auone.jp/             DISCARD

/^From:.*aeon.jp/              DISCARD

/^From:.*aeon.co.jp/           DISCARD

/^From:.*usaputi.com/           DISCARD

/^From:.*cc.com/              REJECT

/^From:.*japannetbank.co.jp/      REJECT

/^From:.*mufg.jp/              DISCARD

/^From:.*ts3card.com/           DISCARD

/^From:.*uccard.co.jp/          DISCARD

/^From:.*etc.ne.jp/            DISCARD

/^From:.*americanexpress.com/     DISCARD

/^From:.*aplus.co.jp/           DISCARD

/^From:.*welcome-aexp.jp/        DISCARD

/^From:.*welcome-aexp.net/       DISCARD

/^From:.*saisoncard.co.jp/        DISCARD

/^From:.*iownjyp.cn/            DISCARD

/^From:.*dn.smbc.co.jp/         DISCARD

/^From:.*eki-net.com/           DISCARD

/^From:.*sumiclub.jp/            DISCARD

/^From:.*saya.co.jp/             DISCARD

「.@」0個以上の文字とマッチし、「manekifukurou」と、その後の「@」前に0個以上の文字と「@」後に0個以上の文字とマッチする。

/^From:.manekifukurou.@.*/       DISCARD

/^From:.insatsusigoto.@.*/        DISCARD

/^From:.ml-eki.@.*/            DISCARD

/^From:.eki-.@.*/             DISCARD

/^From:.etc-.@.*/             DISCARD

ドメインの国別記号でチェック

/^From:.*.it/                 REJECT

/^From:.*.tk/                 REJECT

/^From:.*.ru/                 REJECT

/^From:.*.br/                 REJECT

/^From:.*.cyou/               REJECT

/^From:.*.icu/                REJECT

/^From:.*.cn/                REJECT

/^From:.*.shop/               REJECT

/^From:.*.top/                REJECT

/^From:.*.xyz/                REJECT

/^From:.*.kr/                 REJECT

/^From:.*.hk/                 REJECT

/^From:.*.nz/                 REJECT

/^From:.*.uk/                 REJECT

/^From:.*.nl/                 REJECT

/^From:.*.club/               REJECT

/^From:.*.us/                REJECT

/^From:.*.monster/            REJECT

/^From:.*.cc/                REJECT

/^From:.*.io/                REJECT

/^From:.*.website/            REJECT

/^From:.*.tg/                REJECT

4.Dateセクション

Dateタイムゾーン、結構効果ある。怪しい国を一気にブロックできるから。

/^Date:.*-0400/               REJECT

/^Date:.*-0500/               REJECT

/^Date:.*-0600/               REJECT

/^Date:.*+0700/               REJECT

/^Date:.*-0900/               REJECT

/^Date:.*+0800/               REJECT

/^Date:.*+0600/               REJECT

/^Date:.*+0500/               REJECT

/^Date:.*+0400/               REJECT

/^Date:.*+0100/               REJECT

/^Date:.*+0200/               REJECT

/^Date:.*+0300/               REJECT

/^Date:.*+0330/               REJECT

/^Date:.*+1300/               REJECT

/^Date:.*+0545/               REJECT

/^Date:.*+0530/               REJECT

5.Return-Pathセクション

メタ文字の説明は言うまでもない。

/^Return-Path:.<#.@.*>/         REJECT