カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

ブラックリストの作り方

環境:qmail+vpopmail+procmail

procmailを利用してブラックリストを作成します。
まず、適当なディレクトリに空のファイルを作成します。
(ここでは/usr/tmp/.blacklistとしています)

メールアドレスをブラックリストに追加するには、
件名に追加したいメールアドレス、本文に1行でパスワード(pw=00000000の形式)を
入力し、bl@example.jp宛に送信するようにしています。
送信元アドレスも指定されたドメインからのみに指定しています。

#/home/vpopmail/domains/example/bl/.procmailrc

SHELL=/bin/sh #ファイルに書き込むため必須
PATH=/bin:/usr/bin:/usr/local/bin
HOME=/home/vpopmail/domains/example/bl
MAILDIR=$HOME/Maildir
DEFAULT=$HOME/Maildir/
#LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$MAILDIR/procmail.lock

# ブラックリストファイルのパス
BLACKLIST=/usr/tmp/.blacklist

# 送信元アドレスを判断
:0H
* ! ^From: .*@example.jp
/dev/null

# 本文中のパスワードをチェック
:0B
* ! ^(pw|Pw|pW|PW)=00000000
/dev/null

# 件名の有無をチェック([]内は^・半角スペース・タブ)
:0
*$ ! ^Subject: *\/[^ ].*
{
	ADDBL = `formail -x Subject:`
}

# 件名を変数に格納
:0E
{
	ADDBL = $MATCH
}

# 送信されたアドレスが既にブラックリストにあるかチェック
:0
* ? test -s $BLACKLIST
* ? echo "$ADDBL" | fgrep -iqwf $BLACKLIST
/dev/null

# ブラックリストに未登録なら追加
:0E
| echo $ADDBL >> $BLACKLIST && echo >> $BLACKLIST
# 色んなところで紹介されているのは、1行ずつ開けて登録するようになっているが
# 行が開いていなくても改行されていればいけるようなので以下でも可
| echo $ADDBL >> $BLACKLIST

続きを読む…»

0
3,086 views

PROCMAILレシピ2

レシピを共有化できないかと模索していたら、見つかったので記しておきます。

適当なディレクトリ(ここではetc)に共有するレシピを作成します。

#/etc/procmailrc
#環境変数の設定
PATH=/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir
DEFAULT=$HOME/Maildir/
#LOGFILE=$MAILDIR/procmail.log #省略するとログを記録しない
LOCKFILE=$MAILDIR/procmail.lock

#空のヘッダーを削除
:0Hfw
| formail -z

#日本語メールのみ受け付ける
:0Hfw
* ! ^Content-Type: .*(iso-2022-jp|multipart/mixed;)
* ! ^Subject: .*(iso-2022-jp|utf-8|euc-jp|shift_jis)
* ! ^FROM_DAEMON
| formail -I "X-Spam-Flag: YES"
:0Hfw
* ^Content-Type: .*(US-ASC|iso-8859-1)
| formail -I "X-Spam-Flag: YES"

#容量制限:60MBまで
:0Hfw
* > 60000000
| formail -I "X-Spam-Flag: YES"

#よくあるスパムメールを除去
:0Hfw
* ^From: .*<(_|-)
| formail -I "X-Spam-Flag: YES"

#Fromがないもの
:0Hfw
* ! ^From: .*
| formail -I "X-Spam-Flag: YES"

#アドレス詐称対策
#Message-IDがなく宛先と送信元が自分自身のアドレスなら
#返す先がないので削除
:0Hfw
* ! ^Message-ID: .*
* $ ^To: .*$ME.*
* $ ^From: .*$ME.*
| formail -I "X-Spam-Flag: YES"

#送信元メールサーバーのDNS名前解決ができないとき
:0Hfw
* ^Received: .*from unknown
| formail -I "X-Spam-Flag: YES"

続きを読む…»

0
2,312 views

ACCESS VBA テーブルの削除

テーブルの一覧を取得し、削除します。
※DAO参照はなしで実行できるようにしています。

Dim tbls As Object 'DAO.TableDefs
Dim tbl  As Object 'DAO.TableDef

'テーブル一覧取得
Set tbls = CurrentDb.TableDefs

Dim DelTables As Collection

Set DelTables = New Collection

For Each tbl In tbls

	'「MSys」で始まるテーブルはシステムテーブルなので省きます
    If Not tbl.Name Like "MSys*" Then
        DelTables.Add tbl.Name
    End If

Next

For i = 1 To DelTables.Count
    'テーブル削除
    tbls.Delete (DelTables(i))
Next

MsgBox "削除件数=" & DelTables.Count
0
8,645 views

nslookup

nslookup [set [command option]] [ドメイン名(正引き)またはIPアドレス(逆引き)] [DNSサーバー名]

オプションなしで実行すると対話モードになります。

検索レコード種別を入力

set type=soa
set type=mx
set type=ns
set type=a

ドメインを入力

domain.jp

--[結果が出力されます]

対話モードを終了する

exit
0
2,496 views

ACCESS CSVデータインポート時の文字コード

TransferTextメソッドにて、テーブルにCSVデータをインポートする際、
文字コード(CodePage)を指定してインポートすることができます。

最後の引数[CodePage]を省略すると、シフトJISで読み込まれます。

DoCmd.TransferText acImportDelim, , _
    "テーブル名", "ファイルパス", True, , 932   'Shift_JIS

DoCmd.TransferText acImportDelim, , _
    "テーブル名", "ファイルパス", True, , 51932 'EUC-JP

DoCmd.TransferText acImportDelim, , _
    "テーブル名", "ファイルパス", True, , 65001 'UTF-8

DoCmd.TransferText acImportDelim, , _
    "テーブル名", "ファイルパス", True, , 50220 'JIS

CSVデータエクスポート時も同様です。

こちらに参考になる表があります。
http://www.atmarkit.co.jp/fdotnet/dotnettips/013enumenc/enumenc.html

0
33,606 views