2018年5月28日月曜日

.mailfilterを弄ったものの即訂正!(XServer)

副題:エックスサーバーをもっと便利に使い倒そう!【シリーズ5】

は、"to"や"cc"コマンドのディレクトリ名指定時の潜在的な不具合についてお送りします。

前回『.filterの編集例1』において、内部メールアドレスへ転送する際に
Maildir形式のディレクトリ名で指定する方法について紹介したけど、
その直後にちょっとした不具合を発見しちゃったんだよね。

なので、紹介した手前、そのまま知らん顔では申し訳なさ過ぎるので、
図らずも今回はその訂正ネタを記事にしようと思います。

なお、紹介した方法は、レアな使い方かも知れないけど、
特別変な事をやっている訳ではなく、公式マニュアル(?)にある通りの指定を
行っているだけですので、その点は誤解無きようにお願いします。

ちなみに、転送自体は正常に処理されてるんだけどね。
じゃー何が具合が悪いのかと言うと、、、
メールアカウント毎に設定しているメールボックス容量の制限値が、
件の処理を行うと勝手に別の値に書き換わっちゃうのよ!!

もう少し詳しく説明すると、転送先に指定したメールアカウントの
maildirsizeファイル中の1行目に保持されてる制限値が意図していない値に
なっちゃうって事なの! 変な副作用が発生してるでしょ?
なお、maildirsize中の値は、サーバーパネル上の設定が元になってるハズだけど、
何故か両値は連動してないみたいだよ。で、実際効いてるのはmaildirsizeの方ね!
なので、確認する場合は、FTPかWebメールの画面から調べて見てね。

オイラのケースでは、メールボックス容量を最大の5,000MBにしておいたのに、
メール受信の不調で色々調べてたら、勝手に300MBに変わってたんだよね。
で、オーバーフローしてたと言う落ち。
ちょっと俄かには信じ難い挙動でしょ?

より正確性を期す説明をするならば、"to"ではなく"cc"で発生していた現象です。
また、複数のドメイン、複数のメールアカウントを作成して、アカウント毎に
メールボックス容量も複数の設定がある状態でした。
値はランダムに変わるんじゃなく、他の設定値の何れかの値に固定化されてる感じかな?

と言う様にエックスサーバーではカオス状態に陥る事が判明したので、
以下に、その代替となる回避方法を晒しておきます。

MAILADDR="/home/サーバーID/ドメイン名/mail/サブドメイン名/内部メールアドレス/"
to "|/usr/bin/deliverquota $MAILADDR"
または、
xfilter "/usr/bin/deliverquota $MAILADDR"

転送じゃなくコピー目的なら、
cc "|/usr/bin/deliverquota $MAILADDR"

ググって、"deliverquota"コマンドで試して見たら、変な副作用を回避できました。

では、次回こそ本文編です。お楽しみに~

2018年5月24日木曜日

.mailfilterを弄ってみる!(XServer)

副題:エックスサーバーをもっと便利に使い倒そう!【シリーズ4】

は、役立たずSAの代役として、メール振り分け機能をフル活用する方法についてお送りします。

前回は、大事な所で電池が切れちゃって、ご免なさい。
ではでは、早速本題に入りますよ~

【件名によるスパム判定】

ここでは、ドメイン共通設定となる『.filter』ファイルを編集して、
件名でスパム判定する方法を紹介するね。もちろん日本語にも完全対応!
(.filterの場所:"/home/サーバーID/ドメイン名/mail/")

■.filterの編集例1

if (`cat | grep Subject | nkf -mw` =~ /.*日本語の件名キーワード.*/)
{
    # 件名の先頭に"[Meiwaku] "を付加する
    xfilter "sed -e 's/^Subject: /Subject: \[Meiwaku\] /'"

    # 内部メールアドレスへ転送する
    to "/home/サーバーID/ドメイン名/mail/サブドメイン名/内部メールアドレス/"
}
# 文字コード:UTF-8N、改行コード:LF

[解説]

"日本語の件名キーワード"と一致する場合に、件名の先頭に"[Meiwaku] "を付加して、
指定された内部メールアドレスへ転送する例です。
バッククォート演算子『``』を使って、拾い出した件名にMIMEデコードを掛けて、
UTF-8Nコードへ変換してるとこが一番の肝であって味噌なんだよね!

また、本例では内部配送となるメールアドレスへ転送する場合を想定して、
Maildir形式のディレクトリ名で指定してみました。
レアな使い方だけど、この方が余計な処理も走らずにスマートな転送が可能だよ。
(【重要】変な副作用の不具合がある模様です。詳細は次回記事をご参照下さい。)
なお、外部のメールアドレスへ転送する場合は、素直に例2の様な一般的な方法でお願いねっ。

[豆知識]

話は脱線するけど、".mailfilter"、".alias"、".filter"、".header"や".spamassassin"等のファイル中
でのパス指定の方法がやや謎的に感じたので、ここで簡単に説明しておこうと思います。

絶対パス指定時の基準は、言わずと知れたルートディレクトリ"\"が基準です。
また、相対パス指定時の基準は、カレントディレクトリと相場は決まっています。
では、そのカレントは何処かと言うと、各メールアドレス毎に準備された".mailfilter"ファイル
が存在しているそれぞれのディレクトリが、フィルター実行時のカレントとなっています。

つまり、相対パス指定を行う場合は、
"/home/サーバーID/ドメイン名/mail/サブドメイン名/各メールアドレス/"
が基準となるので、そこからの相対でパスを指定すれば良い事になります。

なお、このカレントの基準は、ファイル配置が異なる".filter"や".header"でも同様です。
最終的には".mailfilter"でインクルードされてるだけなので、ちょっと考えれば分かるでしょ?


■.filterの編集例2

SUBJECT = `cat | grep Subject | nkf -mw` # 変数を使用する例
if (lookup($SUBJECT, "../../block_subject.dat")) # 相対パス指定の例
{
    # 件名の先頭に"[Meiwaku2] "を付加する
    xfilter "sed -e 's/^Subject: /Subject: \[Meiwaku2\] /'"

    # 外部メールアドレスへ転送する
    to "!転送先メールアドレス"
}

[解説]

件名が以下の"block_subject.dat"ファイル中の各行のキーワードの何れかと一致する場合に云々、と言うような判定処理となります。
(block_subject.datの場所:"/home/サーバーID/ドメイン名/mail/")

lookup関数を使う事で、複数の件名条件をスマートに指定可能となり、後々の保守性も抜群♪
当然ながら"block_subject.dat"のファイル名や配置場所も任意で変更が可能です。

[block_subject.datの内容]

#--- ここから ---
カード利用のお知らせ
あなたのApple IDのセキュリティ質問を再設定してください。
Apple IDアカウントを回復してください
【楽天市場】注文内容ご確認(自動配信メール)
■『FC2.』よりお知らせ※継続課金の停止の可否について
アカウント凍結による所有者特定措置行使【(株)エフシーツー】
注文書、請書及び請求書のご送付
#--- ここまで ---
# で始まる行は、コメントと見なされるよ。
# キーワードは、上から順に評価されるよ。
# キーワードには、正規表現も使えるよ。
# 文字コード:UTF-8N、改行コード:LF

次回は、本文編です。お楽しみにっ!

2018年5月21日月曜日

実は秀逸なメール振り分け機能♥(XServer)

副題:エックスサーバーをもっと便利に使い倒そう!【シリーズ3】

は、メール振り分け機能に秘められた能力をフル活用する方法についてお送りします。

前々回は『迷惑メールチェック機能の500KB制限』について、
前回は『受信メールのSPF誤判定』について触れ、それぞれ、
その解決方法を説明したので、興味のある人は覗いて見てね。

ところで、前回の内部配送メールが"SOFTFAIL"と誤判定される件なんだけど、
いつの間にか、こっそり修正されてるっぽいんだよね。(白々しい。。。

でもね、外部からの受信メールのSPF判定は、相変わらず怪しいまんま!
そもそも、SPFレコードって、送信先に対して自身のSMTPサーバーの正当性を
自称するものでしょ?
なので、前回説明した設定は、とりあえず有効なものだと思うよ。

さてさて、今回は、3)や4)で指摘した「標準提供されてるSpamAssassinの迷惑メールチェック機能がほとんど役に立っていない!」件について言及しようと思います。

やっぱね、ベイジアン機能が省かれちゃって、肝心要の学習能力が無い時点で、
終わってるんだよね。。。翼を折られた鳥のようにね。
だから、いくらスコア判定基準の強弱が調節できても意味が無いのっ!
どんどん沸いて来る新手の迷惑メールにまったく対応できてないのが実情なんだからね。
おそらくルールの更新も行われてない感じだもん。

こんな状態だと、俄然キーワードで弾きたくなるってのが人情とゆーもの。
そこで、以下、その方法について説明して行きたいと思います。

手始めに、SpamAssassinの"user_prefs"ファイル設定を放り込んでみたよ♪
試した設定は、以下のような内容だったと思う。
例)
required_score 6.0
rewrite_header subject [SPAM_TEST]
body     NG_RAMBLER_RU /rambler\.ru/
describe NG_RAMBLER_RU The body contains rambler.ru words
score    NG_RAMBLER_RU 7
けどダメでした。

これも利用が制限されてるっぽいです。多分セキュリティ云々って奴で、
"allow_user_rules"が無効(デフォルト値)のままなんだろうね!
ホント、エックスサーバーのSpamAssassin、自由度奪われ過ぎてて使えないわ!

こうなると、最後の手段として、『メールフィルター機能』を最大限活用する外ないよねぇ~
ただ、サーバーパネルにある『メールの振り分け機能』は今一つ使えない為、
FTP接続して設定ファイルを直接弄る必要があるので、そこんとこヨロシクね。

【メールの振り分け機能のダメダメな点】

・複数条件は三つまでで"and"指定のみ。("or"指定は不可)
・複雑な条件指定はなおさら不可能。
・件名や本文で日本語が使えないらしい。。。

このように、サーバーパネル上だと大して使えない奴なんだけど、、、
でもね、エックスサーバーのメールフィルター機能の実体は『maildrop』なので、
実は秘かに非常に有能なフィルター機能を備えてるって寸法なのよ。
(逆に言えば、普段は宝の持ち腐れ状態!

もっと言えば、メールサーバー自体は統合メール環境である"Courier-MTA"で
構築されてるっぽいんだよね。
(ごめん、メールサーバーは"Postfix"でした。)
Courier-MTAは、プロジェクトが巨大化し過ぎてMTAの範疇を大幅に超えた為、
公式サイトも含め、Courier Mail Serverという呼称で一般的には呼ばれているらしい。
そんで、その中の極一部の機能にmaildropがあるってわけ。

話が脱線したけど、、、
でっ、そのお宝機能は何処を弄るかってぇーと、各メールアドレス毎のディレクトリ中にある
".mailfilter"ファイルがmaildropの定番中の定番!!

なんだけど、、、
".mailfilter"の中からドメイン共通設定の".filter"や、メールアドレス毎の設定の".alias"を
取り込んでるから、各自の都合に合わせて弄れば良いと思うよ♪

また、".mailfilter"の詳しい説明は、以下が参考になるかな?
http://www.courier-mta.org/maildropfilter.html

なお、設定を誤るとメールの受信が出来なくなっちゃうので、十分な注意が必要だよ!
ちょっとした誤りなら、元の設定に戻せば、そのうち回復するけど、、、
最悪ちょっと面倒な事になってしまう場合もあるから、一応警告しとくねっ。
その辺りの復旧や事前チェックの方法については、機会があればとゆー事で・・・。

それじゃー次、具体的なメールフィルターの設定例へ行ってみよー♪

と思ったけど、なんだか疲れちゃったので、次回に続く。。。(ごめんね

2018年5月14日月曜日

SPF誤判定の嵐に吹かれて!(XServer)

副題:エックスサーバーをもっと便利に使い倒そう!【シリーズ2】

は、SpamAssassinのSPF誤判定から転じて、SPFレコードの改良設定についてお送りします。

前回は、『迷惑メールチェック機能の500KB制限』について触れ、
その解除方法を説明したので、興味のある人は覗いて見てねっ!

所で、たった今気付いたんだけど、不満を根本から解決する方法もあると思うんだよね。
例えば、レンタルスペース内部に別途新たなスパム判定機能を立てて、
そいつに処理させちゃう方法とかがね。。。

でもね、正直、オイラもそこまで詳しくはないんだよね。orz
なので、まぁ、現時点では今後の課題として捉えておこうと思う。(オーイ
と言う事で、引き続き、既存機能をどうやって改善するかの方向で話を進めるよっ。

さて、前置きが長くなりましたが、、、
今回は、2)の『SPF判定の誤り』について説明します。

みなさんは、メールのヘッダ情報を確認した事があるだろうか?
オイラは暇人(?)だから、結構見てるよ。
ここを見るとね、スパム判定結果が確認できて、前回説明した500KB制限による
ノーチェック問題や、今回説明するSPF誤判定状況が分かるんだよね。

そこで、メールヘッダ中の"X-Spam-Status"タグに注目して見て欲しいんだけど、
"SPF_SOFTFAIL"って項目がありませんか?

これって、「SPF判定結果が怪しい!」って事で、スコア値が概ね1加算されてるんだけど、
オイラの環境だと、ほとんどのメールがSOFTFAIL判定を喰らってるわけ!
何かおかしいよね?

試しに、メーラーの疎通テストなんかで良くやる自身のメアドに送ってみてもダメ!
つまりは、XServer内で作成されたメアド同士の送受信でさえ、
「SOFTFAILと判定されちゃってる!」
って事が分かったんだよね。これって変だと思うでしょう?

もちろん、DNSレコードのSPF設定は、マニュアル通りちゃんと設定してあるよ。
なお、上位サービスのSixcore(シックスコア)だと、この点は何の問題もありません。

みなさんの環境ではどうだか分からないので、気になる人は一度確認して見てね。

「SOFTFAILなら、ほぼスパム扱いでも良いんじゃね?」って考えのオイラからすると、
この誤判定は、ちょっと許し難い部分があるんだよね~

基本的には、XServer(エックスサーバー)のSpamAssassin側の問題っぽいので、
中の人にちゃんとした御膳立てをやってもらうしかないと思うんだけど、
指摘しても親身になって動いてくれないんだよね。
残念な事に中の人は変だと思ってないみたいなの。。。(阿保なの?馬鹿なの?
分かり易い例えで同社Sixcoreとの挙動の違いを言ってみても、取り付く島もない有り様!
「アンタらどんだけ縦割りなんだよっ!」と思わず罵っちゃいました。心の中でねっ。

ただ、誤判定を幾らか緩和する方法があるので、万が一、困ってる人が居れば、
以下を参考にしてください。

【DNSレコードのSPF設定(改)】

マニュアルには、DNSレコードのSPF設定に利用サーバーのIPアドレスを記述する旨の
説明がありますが、何とそれだけでは不十分なのです!!

ウィルスチェックサーバーのIPアドレスも追記する必要があります。(未公開情報
例)
v=spf1 +ip4:xxx.xxx.xxx.xxx +ip4:yyy.yyy.yyy.yyy ~all
※xxx.xxx.xxx.xxx:利用サーバーのIPアドレス
※yyy.yyy.yyy.yyy:ウィルスチェックサーバーのIPアドレス
※ウィルスチェックサーバー:virusgw数字.xserver.jp(数字部分は、1~12や6001など)

まだまだ続きます。次回をお楽しみにっ!

2018年5月11日金曜日

SpamAssassinには喝入れを!(XServer)

副題:エックスサーバーをもっと便利に使い倒そう!【シリーズ1】

は、SpamAssassin(以下SA)の怠惰な500KB制限の解除方法についてお送りします。

巷ですこぶる評判の良いXServer!
かく言うオイラも、そこそこ満足して使ってます。

でもね、不満が無い訳じゃーーない。
最大の不満は、『迷惑メールチェック機能』が貧弱過ぎる点なんだけど、
この辺を突っ込んでる記事を見かけないから、ちょっと不思議なんだよねぇ~

むしろ、「迷惑メールチェック機能まであって凄い!」的な称賛の声が多数だよね。
ふーーーん、みんな満足してるんだ。。。
ってゆーか、ほんとにほんと?

そんな訳だから、オイラが少し突っ込んで見ようと思うよ!
ついでに、不満を解消すべく編み出した"裏ワザ"も紹介するねっ。

【迷惑メールチェック機能の不満概要】

1)500KB以上のサイズのメールはノーチェックでスルー!(はい、ここ重要)
2)SPF判定の誤りが非常に多い。(ほとんどがSOFTFAILと判定されている)
3)滅多な事では迷惑メールとして判定されない。(チェックがユルユル)
4)同一内容のメールなのに判定結果にムラがある。(学習能力が無い)

つまり、まともに機能しているとは到底思えないレベルに感じちゃう状態!!
分かってくれたかな?

特に憤りを覚えるのが、1)だよね。
『迷惑メール設定』をONにしても、メールサイズ如何でチェックされない事があるって、
みんなは知ってたかな?
普通ならONにした時点で、すべてのメールがチェックされてると思うよね。
でも、実際はそうじゃないんだよね。

大きな声では言えないから、小さな声で言うけど、
SpamAssassinの既定値は、500KB以上のサイズのメールはオールスルーでノーチェック!
でっ、XServerは既定のまんま。
そーゆー事なんだよね。

残念ながら、上位サービスのSixcore(シックスコア)でさえも、この点は同様だよ。
なお、両サポートに問い掛けて見たものの、知識が無いのか、はたまた、
あえて触れたくないのか、オイラが求めた答えは得られなかった。。。

途方に暮れてる訳にも行かないので、仕方なく自力で学習したんだよね。
そしたらね、対処方法が分かっちゃったの。
以下にその方法を説明するけど、良い子は絶対に真似しないで下さいね!
あっ、悪い子も真似しちゃダメ!絶対ダメ!いいですね、絶対ですよ!

なんでかってーと、サーバー環境がまったく同一とも限らないし、
サーバーに余計な負荷を掛けると中の人に怒られちゃうかも知れません。
だから、真似しちゃダメなんだけど、それでもやるって人は"自己責任"でお願いねっ!
それじゃー、以下、具体的に説明するよ。

【500KB制限解除方法】

".spamassassin"ファイルを編集して、"spamc"コマンドに、
"s"オプションでサイズ指定を追加するだけ。
(.spamassassinの場所:"/home/サーバーID/ドメイン名/mail/")

例)
xfilter "/usr/local/bin/spamc -u ドメイン名 -s 最大メールサイズ"
※最大メールサイズ指定は、バイト数単位だよ。
※メール送受信時の上限サイズが100MB程度なので、その辺の値が適当かな。

なお、ここを弄るとサーバーパネル上では、『迷惑メール設定』がOFFと勘違いされて
誤表示されるけど、気にしな~い、気にしない。

長くなったので、次回に続く。。。

タイトル設定の迷路に嵌る!(Blogger)

Bloggerのタイトル設定欄、目立たないって思わない? オイラは始めて数日間、まったく気付かず未設定のままだったよ!(恥ずかしぃ~ で、ふと気付いて設定しようとしたものの良く分からない。。。 ググってもヒットするのは、タイトルの表示方法の設定や、 どの様なタイトルを...