Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
- 2004: 01 02 03 04 05 06 07 08 09 10 11 12
- 2005: 01 02 03 04 05 06 07 08 09 10 11 12
- 2006: 01 02 03 04 05 06 07 08 09 10 11 12
- 2006-03-31 [JavaScript] script.aculo.usを使った項目入れ替え時のイベント通知
- 2006-03-30 [JavaScript] script.aculo.usを使った項目入れ替え
- 2006-03-29 [misc] GDMログイン画面からコンソール画面へ
- 2006-03-28 [Fedora] Fedora Core 4 から Fedora Core 5 へのアップグレード
- 2006-03-27 [Ubuntu] Apache2でDefaultCharSetがUTF-8になってしまう現象を回避する
- 2006-03-24 [Postfix] razorのインストールとPostfix再起動
- 2006-03-23 [Postfix] spamassassinのインストール
- 2006-03-22 [Postfix] clamavのインストール
- 2006-03-20 [Postfix] amavisd-newをインストールしてPostfixから呼び出せるようにする
- 2006-03-17 [Postfix] Debianでpostfix+amavisd-new+clamav+spamassassinでウイルス/SPAMフィルタリング
- 2006-03-16 [quiz] 木の復元
- 2006-03-15 [Haskell] AA折れ線グラフ
- 2006-03-14 [quiz] AA折れ線グラフ
- 2006-03-13 [Haskell] 木のトラバース
- 2006-03-10 [MacOS] MacOS X WorkShopでOpenOffice.org 2.0.2rc4日本語版のための環境を構築する
- 2006-03-09 [MacOS] MacOS X WorkShopでCarbon Emacsを導入する
- 2006-03-08 [Gauche] 同じタグをもつ要素をまとめたい
- 2006-03-07 [Haskell] 三桁毎にスペースを挿入する正規表現
- 2006-03-06 [Gadget] おおっ! HHK Note
- 2006-03-03 [FYI] REST入門
- 2006-03-02 [Book] Rails の本
- 2006-03-01 [GCC] 値としてのラベル
2006-03-31 [JavaScript] script.aculo.usを使った項目入れ替え時のイベント通知
script.aculo.usのSortableでonUpdateによるイベント通知を行うには、 次の2点を守らなければならない。
- 子要素に必ずidを付与しなければならない
- 子要素のidは、必ず「名前_番号」の形式でなければならない! たとえば'chap2'はダメで'chap_2'ならオーケーである
<html>
<head>
<script type="text/javascript" language="javascript" src="prototype.js"></script>
<script type="text/javascript" langupage="javascript" src="scriptaculous.js"></script>
</head>
<body>
<div id="book">
<div id="chap_1">- Foundations of Ajax</div>
<div id="chap_2">- Using XMLHttpRequest Object
<div id="sec_1">-- Overview of the XMLHttpRequest Object</div>
<div id="sec_2">-- Methods and Properties</div>
<div id="sec_3">-- An Example Interaction</div>
</div>
<div id="chap_3">- Communicating with the Server</div>
<script type="text/javascript" language="javascript">
Sortable.create('book',{tag:'div',ghosting:false,constraint:false,
onUpdate:function(s){alert(Sortable.serialize(s))}});
Sortable.create('chap_2',{tag:'div',ghosting:false,constraint:false,
onUpdate:function(s){alert(Sortable.serialize(s))}});
</script>
</body>
</html>
(これで半日悩んで、分かったときには一気にやる気を失いましたorz)
--yasuyuki
2006-03-30 [JavaScript] script.aculo.usを使った項目入れ替え
AJAXに対応したライブラリscript.aculo.usを使って、 ドラッグドロップで項目を入れ替えられるリストを書いてみる。
<html>
<head>
<script type="text/javascript" language="javascript" src="prototype.js"></script>
<script type="text/javascript" langupage="javascript" src="scriptaculous.js"></script>
</head>
<body>
<div id="book">
<div>- Foundations of Ajax</div>
<div>- Using XMLHttpRequest Object
<div id="chap2">
<div>-- Overview of the XMLHttpRequest Object</div>
<div>-- Methods and Properties</div>
<div>-- An Example Interaction</div>
</div></div>
<div>- Communicating with the Server</div>
<script type="text/javascript" language="javascript">
Sortable.create('book',{tag:'div',ghosting:false,constraint:false,});
Sortable.create('chap2',{tag:'div',ghosting:false,constraint:false,});
</script>
</body>
</html>
項目入れ替えはSortableを使えば簡単にできる。
だが項目入れ替え時に何らかの処理を行おうとしてonUpdateイベントを追加してもうまく通知されない。
<html>
<head>
<script type="text/javascript" language="javascript" src="prototype.js"></script>
<script type="text/javascript" langupage="javascript" src="scriptaculous.js"></script>
</head>
<body>
<div id="book">
<div id="chap1">- Foundations of Ajax</div>
<div id="chap2">- Using XMLHttpRequest Object
<div id="sec1">-- Overview of the XMLHttpRequest Object</div>
<div id="sec2">-- Methods and Properties</div>
<div id="sec3">-- An Example Interaction</div>
</div>
<div id="chap3">- Communicating with the Server</div>
<script type="text/javascript" language="javascript">
Sortable.create('book',{tag:'div',ghosting:false,constraint:false,
onUpdate:function(s){alert(Sortable.serialize(s))}});
Sortable.create('chap2',{tag:'div',ghosting:false,constraint:false,
onUpdate:function(s){alert(Sortable.serialize(s))}});
</script>
</body>
</html>
上のリストのonUpdateをonChangeに変更するとちゃんとイベント通知されるので、 謎は深まるばかりである。
この問題の解決方法は明日。
--yasuyuki
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-29 [misc] GDMログイン画面からコンソール画面へ
GDMのようなログインマネージャが走っているときに,コンソール画面へ抜け たいときが「たまに」ある.そんな貴方に(えっ儂のこと!? f(^^;))...
Ctrl+Alt+F1
--nobsun
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
tjedcbxrgjrpmbwfuqah, http://www.ipisubnedu.com usqjqymubh
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-28 [Fedora] Fedora Core 4 から Fedora Core 5 へのアップグレード
- fedora-release-5-5.noarch.rpm を取得,install
# wget http://download.fedora.redhat.com/pub/fedora/linux/core/5/i386/os/Fedora/RPMS/fedora-release-5-5.noarch.rpm # rpm -Uvh fedora-release-5-5.noarch.rpm
- yum upgrade
Error: Missing Dependency: libssl.so.5 is needed by package apt Error: Missing Dependency: libneon.so.24 is needed by package apt Error: Missing Dependency: libcrypto.so.5 is needed by package ap ...
とかなんとか出たので,取り敢えず apt はやめにした.# yum remove apt
- 再度 yum upgrade
# yum upgrade
とりあえずできたみたい...
--nobsunこの手順はまったくの無保証です.御自分の責任で試してください.
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-27 [Ubuntu] Apache2でDefaultCharSetがUTF-8になってしまう現象を回避する
Ubuntu LinuxにApache2をインストールすると、 デフォルトのキャラクターセットがUTF-8になっている。
これを回避するには /etc/apache2/conf.d/charset ファイルの以下をコメントアウトする。
#AddDefaultCharset UTF-8
Apache2を再起動する。
sudo /etc/init.d/apache2 restart
--yasuyuki
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
tjedcbxrgjrpmbwfuqah, http://www.ipisubnedu.com usqjqymubh
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-24 [Postfix] razorのインストールとPostfix再起動
razorをインストールするには以下を実行する。
sudo apt-get install razor sudo razor-client sudo razor-admin -d -create -home=/etc/razor
Postfix再起動
いよいよPostfixを再起動する。
sudo /etc/init.d/postfix restart
エラーがないかどうかログファイル(/var/log/mail.logなど)を監視する。
ウイルスフィルタ、SPAMフィルタの動作確認
MTAを経由したメールには、以下のヘッダが付加されているはずである。
X-Virus-Scanned: X-Spam-Status:
(ホワイトリストにある送信元からのメールや、amavisd.confでの$sa_tag_level_defltで設定した値未満のスコアのメールにはX-Spam-Statusは付加されない)
ウイルス、SPAMと判定されたメールはDISCARDまたはREJECTされているはずである。メールログを監視してそれを確かめる。
--yasuyuki
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-23 [Postfix] spamassassinのインストール
spamassassinをインストールするには以下を実行する。
sudo apt-get install spamassassin
/etc/default/spamassassin設定ファイルを編集する。
ENABLED=0
上記を次の通りに変更する。
ENABLED=1
http://www.unix-power.jp/linux/postfix-virus.html
上記を参考に、設定ファイル/etc/spamassassin/local.cfに以下を記述する。
required_hits 9
add_header all Level _STARS(X)_
rewrite_subject 1
subject_tag [SPAM]
report_safe 0
use_dcc 0
use_pyzor 0
use_razor2 1
skip_rbl_checks 0
rbl_timeout 3
score RCVD_IN_BL_SPAMCOP_NET 3
header ISO2022JP_CHARSET Content-Type =~ /charset=['"]?iso-2022-jp['"]?/i
describe ISO2022JP_CHARSET ISO-2022-JP message
score ISO2022JP_CHARSET -0.182
header GB2312_CHARSET Content-Type =~ /charset=['"]?GB2312['"]?/i
describe GB2312_CHARSET GB2312 message
score GB2312_CHARSET 10.00
header KS5601_CHARSET Content-Type =~ /charset= ?['"]?ks_c_5601/i
describe KS5601_CHARSET KS_C_5601 message
score KS5601_CHARSET 10.00
header MISYOUDAKU Subject =~ /L\$.*(>|=3E)5.*Bz/
describe MISYOUDAKU Misyoudaku
score MISYOUDAKU 2.0
header BANG_BANG Subject =~ /(!\*|\033\$[B@]).*(!\*|\033\([BJ]!)/
describe BANG_BANG !...!
score BANG_BANG 2.00
header STAR Subject =~ /(\"\(|\*|\!v)/
describe STAR *
score STAR 1.0
header KOUKOKU Subject =~ /9-9p/
describe KOUKOKU KOUKOKU
score KOUKOKU 2.0
meta MISYOUDAKUKOUKOKU MISYOUDAKU && KOUKOKU && STAR
describe MISYOUDAKUKOUKOKU MISYOUDAKU && KOUKOKU && STAR
score MISYOUDAKUKOUKOKU 4.0
meta MALFORMED_TO_KOUKOKU TO_MALFORMED && MISYOUDAKUKOUKOKU
describe MALFORMED_TO_KOUKOKU TO_MALFORMED && MISYOUDAKUKOUKOKU
score MALFORMED_TO_KOUKOKU 3.5
# Special thanks to Satoshi IWAMOTO-san, for advice: 2002/10/21
rawbody HAISHINTEISHI /G\[\?\.(..){0,2}(Dd;_|ITMW)/
describe HAISHINTEISHI Haishin (no) Teishi
score HAISHINTEISHI 2.0
body KOUDOKUKAIJO /9XFI(..)*2r=\|/
describe KOUDOKUKAIJO Koudoku Kaijo
score KOUDOKUKAIJO 1.5
body MURYOU /L5NA/
describe MURYOU Muryou
score MURYOU 0.5
body KANZENMURYOU /40A4L5NA/
describe KANZENMURYOU Kanzenmuryou
score KANZENMURYOU 2.0
header HAJIMEMASHITE Subject =~ /\$O\$8\$a\$\^\$7\$F/
describe HAJIMEMASHITE Hajimemashite ? I don't know about you.
score HAJIMEMASHITE 3.0
body ISO2022JP_BODY /\033\$[B@]/
describe ISO2022JP_BODY ISO-2022-JP message
score ISO2022JP_BODY -2.394
header X_MAILER X-Mailer =~ /(GpsMailer|SpireMail|IM200[01] Version|Pinta Magazine|MultiMail|BSMTP DLL|E-Magazine|Direct Email|Achi-Kochi Mail|MagicalMail|InternetPost for Active Platform|Web Based Pronto|Oshirase.*-Mailer|SendMailEX|Douhou\@Mail|DM Mailer|Easy DM|{%xmailer%}|^[0-9A-Za-z]{10,}$|<IMail v|jpfree Group Mail Express|SMTPit - FileMaker Pro Email Plugin|MultiSneder|Allaire ColdFusion Application Server|fuck_you69|adToOne|MailMagic|Mail Distributer|FightIK Version |Pegasus Mail for Win32 )|([a-z,'\-]+ ){2,}[a-z]+[0-9]+$|([0-9a-z,'\-]+ ){1,}[a-z ,'\-]+$|vb_smtp_test/
describe X_MAILER spammer's choice of X-Mailer
score X_MAILER 7.0
header X_MAILER_U X-MAILER =~ /Mail Explorer For Internet /
describe X_MAILER_U spammer's choice of X-MAILER
score X_MAILER_U 10.0
header X_MAIL_AGENT X-Mail-Agent =~ /(Extra Japan)|BSMTP DLL/
describe X_MAIL_AGENT spammer's choice of X-Mail-Agent
score X_MAIL_AGENT 5.0
header REPLY_TO_REMOVE Reply-To =~ /remove\@/
describe REPLY_TO_REMOVE Reply-To set to remove@...
score REPLY_TO_REMOVE 2.0
score UNDESIRED_LANGUAGE_BODY 7.0
header MULTIPART_ALTERNATIVE Content-Type =~ /[mM]ultipart\/[aA]lternative/
describe MULTIPART_ALTERNATIVE Multipart/alternative
score MULTIPART_ALTERNATIVE 1.5
body AMSTERDAM_THE_NETHERLANDS /AMSTERDAM THE NETHERLANDS/
describe AMSTERDAM_THE_NETHERLANDS AMSTERDAM THE NETHERLANDS
score AMSTERDAM_THE_NETHERLANDS 2.0
body CONFIDENTIAL_BUSINESS_PROPOSAL /CONFIDENTIAL BUSINESS PROPOSAL/
describe CONFIDENTIAL_BUSINESS_PROPOSAL CONFIDENTIAL BUSINESS PROPOSAL
score CONFIDENTIAL_BUSINESS_PROPOSAL 2.0
body ZIMBABWE_SCAM /International Press into Zimbabwe and the drop from office of the/
describe ZIMBABWE_SCAM International Press into Zimbabwe and the drop from office of the
score ZIMBABWE_SCAM 10.0
body THANKS_GOD_BLESS /^THANKS.+GOD.+BLESS/i
describe THANKS_GOD_BLESS Thanks, GOD BLESS YOU
score THANKS_GOD_BLESS 2.0
meta NETHERLANDS_SCAM AMSTERDAM_THE_NETHERLANDS && THANKS_GOD_BLESS && DEAR_SOMETHING
describe NETHERLANDS_SCAM AMSTERDAM_THE_NETHERLANDS && THANKS_GOD_BLESS
score NETHERLANDS_SCAM 5.5
body NIGERIAN_NATIONAL_PETROLEUM /Nigerian National Petroleum/i
describe NIGERIAN_NATIONAL_PETROLEUM Nigerian National Petroleum Corporation
score NIGERIAN_NATIONAL_PETROLEUM 2.2
meta NIGERIAN_SCAM1 NIGERIAN_NATIONAL_PETROLEUM && RISK_FREE && DEAR_SOMEBODY && SUPERLONG_LINE
describe NIGERIAN_SCAM1 NIGERIAN_NATIONAL_PETROLEUM && RISK_FREE && DEAR_SOMEBODY && SUPERLONG_LINE
score NIGERIAN_SCAM1 5.0
rawbody RANDOM_ID /^[0-9]{4}[a-zA-Z]{4}[0-9]-[0-9]/
describe RANDOM_ID random numeric and alphabet ID-like phrase
score RANDOM_ID 8.0
rawbody RANDOM_ID2 /^[a-z]{13,}$/
describe RANDOM_ID2 random lowercase alphabet ID-like phrase
score RANDOM_ID2 4.0
body MOROMISE /\$b\$m8\+\$;/
describe MOROMISE obscene word: moromise
score MOROMISE 2.0
body SHIROUTOMUSUME /AG\?ML</
describe SHIROUTOMUSUME obscene word: shiroutomusume
score SHIROUTOMUSUME 1.0
body CHOUKAGEKI /D62a7c/
describe CHOUKAGEKI obscene word: choukageki
score CHOUKAGEKI 1.0
meta JP_PORN1 MOROMISE && SHIROUTOMUSUME && CHOUKAGEKI
describe JP_PORN1 MOROMISE && SHIROUTOMUSUME && CHOUKAGEKI
score JP_PORN1 5.0
body CLICK_JP /%\/%j%C%\//
describe CLICK_JP click
score CLICK_JP 1.0
body NEVER_SENT_UNSOLICITED /mail is never sent unsolicited/i
describe NEVER_SENT_UNSOLICITED mail is never sent unsolicited
score NEVER_SENT_UNSOLICITED 3.5
body CONGRATULATIONS /(!+ )*CONGRATULATIONS(!| !+)/
describe CONGRATULATIONS !!!!! CONGRATULATIONS !!!!!
score CONGRATULATIONS 3.0
body TO_BE_REMOVED_TO /to be removed .*to:/
describe TO_BE_REMOVED_TO to be removed and send ALL addresses to:
score TO_BE_REMOVED_TO 2.0
header WINDOWS_CHARSET Content-Type =~ /charset=['"]?windows-125.['"]?/i
describe WINDOWS_CHARSET Windows-1252 message
score WINDOWS_CHARSET 3.0
header BIG5_CHARSET Content-Type =~ /charset=['"]?big5['"]?/i
describe BIG5_CHARSET Big5 message
score BIG5_CHARSET 10.0
full BIG5_BODY /\nContent-Type:.*charset=.*big5.*[\n\r]/i
describe BIG5_BODY Big5 charset in multipart
score BIG5_BODY 10.0
rawbody REMOVEMAIL1 /mailto:remove\@/
describe REMOVEMAIL1 mailto:remove@
score REMOVEMAIL1 2.0
body ENTER_EMAIL /to.*be.*Removed.*from.*all.*future.*Messages.*enter.*email.*address/i
describe ENTER_EMAIL to be Removed from all future Messages, enter email address
score ENTER_EMAIL 8.0
body REMOVEEMAIL2 /if.*you.*want.*to.*remove.*your.*email.*address.*pleses.*sent.*email.*to/i
describe REMOVEEMAIL2 if you want to remove your emailaddress pleses sent email to
score REMOVEEMAIL2 8.0
body REMOVEEMAIL3 /If you do not desire to receive any further e-mails/i
describe REMOVEEMAIL3 If you do not desire to receive any further e-mails
score REMOVEEMAIL3 3.0
body GOKUHIJOUHOU /6KHk>pJs/
describe GOKUHIJOUHOU Gokuhi Jouhou
score GOKUHIJOUHOU 5.0
body CENTRALREMOVALSERVICE /http:\/\/www.centralremovalservice.com\/cgi-bin\/.*.cgi/
describe CENTRALREMOVALSERVICE http://www.centralremovalservice.com/cgi-bin/
score CENTRALREMOVALSERVICE 5.0
body REDLIGHTEMAIL1 /www\.redlightemail\.com\/remove\.cfm/
describe REDLIGHTEMAIL http://www.redlightemail.com/remove.cfm
score REDLIGHTEMAIL 2.0
body REDLIGHTEMAIL2 /100% Spam Free RedLightEmail/
describe REDLIGHTEMAIL2 100% Spam Free RedLightEmail
score REDLIGHTEMAIL2 2.0
meta REDLIGHTEMAIL REDLIGHTEMAIL1 && REDLIGHTEMAIL2
describe REDLIGHTEMAIL REDLIGHTEMAIL1 && REDLIGHTEMAIL2
score REDLIGHTEMAIL 6.0
rawbody RANDOM_ID3 /^\(.+\)[0-9]+[A-Za-z]+[0-9]/
describe RANDOM_ID3 random numeric and alphabet ID-like phrase
score RANDOM_ID3 10.0
body RANDOM_ID4 /[A-Za-z]{18,} [A-Za-z-.]{18,} [A-Za-z]{18,}/
describe RANDOM_ID4 random alphabet ID-like phrase
score RANDOM_ID4 5.0
header ILLEGULAR_FROM From =~ /^[A-Za-z0-9._-]+\@[A-Za-z0-9._-]+\@[A-Za-z0-9._-]+$/
describe ILLEGULAR_FROM From: xxxx@xxxx.jp@xxxx.jp
score ILLEGULAR_FROM 10.0
header BIZIMAGA Subject =~ /:G\?7%S%8%M%9>pJs%\^%,%8%s/
describe BIZIMAGA BIZIMAGA
score BIZIMAGA 10.0
header X_MACKY_ID_PRESENT exists:X-Macky-ID
score X_MACKY_ID_PRESENT 10.0
header X_MACKYCATCODE_PRESENT exists:X-MackyCatCode
score X_MACKYCATCODE_PRESENT 10.0
header X_MACKYMEDIA_PRESENT exists:X-MackyMedia
score X_MACKYMEDIA_PRESENT 10.0
body BIJINESUSHOUKAIHP /%S%8%M%9>R2p.\(BHP/
describe BIJINESUSHOUKAIHP BIJINESUSHOUKAIHP
score BIJINESUSHOUKAIHP 3.0
body GENSENBIJINESUJOUHOUHP /87A\*%S%8%M%9>pJs.\(BHP/
describe GENSENBIJINESUJOUHOUHP GENSENBIJINESUJOUHOUHP
score GENSENBIJINESUJOUHOUHP 3.0
body EURO_SCAM /Learn how \$10,000 in options will leverage \$1,000,000 in/
describe EURO_SCAM Learn how $10,000 in options will leverage $1,000,000 in
score EURO_SCAM 10.0
body BROWSE_FREE /BROWSE FREE!/
describe BROWSE_FREE BROWSE FREE!
score BROWSE_FREE 1.0
body B100P_FREE /100% FREE/
describe B100P_FREE 100% FREE
score B100P_FREE 1.0
rawbody OPTOUT6 /the opt\-out instruction below\. We apologize for any inconvenience\./i
describe OPTOUT6 the opt-out instruction below. We apologize for any inconvenience.
score OPTOUT6 3.0
body OPTOUT1 /""OPT-OUT""/
describe OPTOUT1 ""OPT-OUT""
score OPTOUT1 1.0
body OPTOUT2 /If you wish to "OPT-OUT" from this mailing/
describe OPTOUT2 If you wish to "OPT-OUT" from this mailing
score OPTOUT2 1.0
body OPTOUT3 /http:\/\/.+optout\.html/i
describe OPTOUT3 http://*****/optout.html
score OPTOUT3 2.0
meta OPTOUT4 OPTOUT1 && OPTOUT2 && OPTOUT3
describe OPTOUT4 OPTOUT1 && OPTOUT2 && OPTOUT3
score OPTOUT4 4.0
body BAD_CREDIT /We specialize in .+BAD CREDIT/i
describe BAD_CREDIT We specialize in approving BAD CREDIT!
score BAD_CREDIT 1.0
rawbody HTML_COMMENT_ID /<!-- [0-9]{6,}\.[0-9]{8,} -->/
describe HTML_COMMENT_ID random ID number in HTML comment
score HTML_COMMENT_ID 2.0
rawbody SHINGATASIDEBUSINESSJOHO /\?7.*7\?.*%5.*%\$.*%I.*%S.*%8.*%M.*%9.*>p.*Js/
describe SHINGATASIDEBUSINESSJOHO SHIN. GATA. SA. I. DO. BI. JI. NE. SU. JOU. HOU.
score SHINGATASIDEBUSINESSJOHO 5.0
score IN_REP_TO -0.5
score FROM_AND_TO_SAME -0.5
score CTYPE_JUST_HTML 4.0
score MIME_HTML_ONLY 4.0
score INVALID_DATE 5.4
score TO_LOCALPART_EQ_REAL 1.0
score SMTPD_IN_RCVD 3.0
score REMOVE_PAGE 2.0
score X_PRECEDENCE_REF 4.4
full GB2312ENC /\nContent-Type: .*; charset=.*gb2312[\n\r]/i
describe GB2312ENC gb2312 message
score GB2312ENC 1.0
full MIMEQENC /\nContent-Transfer-Encoding: quoted-printable[\n\r]/i
describe MIMEQENC Quoted-Printable mime definition
score MIMEQENC 1.0
full QENCPTR1 /=[1-9][A-F]/
describe QENCPTR1 Quoted-Printable mime pattern
score QENCPTR1 1.0
full QENCPTR2 /=[\n\r]/
describe QENCPTR2 Quoted-Printable mime pattern
score QENCPTR2 1.0
meta GB2312QENC GB2312ENC && MIMEQENC && QENCPTR1 && QENCPTR2
describe GB2312QENC GB2312 quoted-printable MIME body
score GB2312QENC 10.0
header BINARY_ENCODING Content-Transfer-Encoding =~ /binary/
describe BINARY_ENCODING Content-Transfer-Encoding: binary
score BINARY_ENCODING 3.0
body STRICTLY_CONFIDENTIAL /STRICTLY CONFIDENTIAL/
describe STRICTLY_CONFIDENTIAL "STRICTLY CONFIDENTIAL" is NOT confidential.
score STRICTLY_CONFIDENTIAL 3.0
body ABSOLUTE_CONFIDENCE /I am writing you in absolute confidence primarily to seek/i
describe ABSOLUTE_CONFIDENCE I am writing you in absolute confidence primarily to seek
score ABSOLUTE_CONFIDENCE 1.0
body SOURCE_OF_THE_MONEY /^Source of the money:/i
describe SOURCE_OF_THE_MONEY Source of the money:
score SOURCE_OF_THE_MONEY 0.3
body MY_LATE_FATHER /My late father.+, a native of +Mende District in the/i
describe MY_LATE_FATHER My late father XXXXXX, a native of Mende District in the
score MY_LATE_FATHER 0.5
meta NIGERIAN_TRANSACTION_6 ABSOLUTE_CONFIDENCE && SOURCE_OF_THE_MONEY && MY_LATE_FATHER
describe NIGERIAN_TRANSACTION_6 ABSOLUTE_CONFIDENCE && SOURCE_OF_THE_MONEY && MY_LATE_FATHER
score NIGERIAN_TRANSACTION_6 8.0
full SHIFT_JIS1 /charset="shift_jis"/i
describe SHIFT_JIS1 charset="shift_jis"
score SHIFT_JIS1 1.0
meta MULTI_SJIS MULTIPART_ALTERNATIVE && SHIFT_JIS1
describe MULTI_SJIS MULTIPART_ALTERNATIVE && SHIFT_JIS1
score MULTI_SJIS 1.0
header VSOURCE From =~ /Vsource/i
describe VSOURCE VSOURCE
score VSOURCE 5.0
header FAKEDMSOE User-Agent =~ /Microsoft-Outlook-Express-Macintosh-Edition/
describe FAKEDMSOE User-Agent: Microsoft-Outlook-Express-Macintosh-Edition
score FAKEDMSOE 3.0
body OSOKUNATTEGOMEN /\$\*JV;vCY\$\/\$J\$C\$F\$4\$a\$s\$M/
describe OSOKUNATTEGOMEN "OSOKUNATTEGOMENNE"
score OSOKUNATTEGOMEN 0.1
body HPTSUKUCCHATTA /HP.+:n\$C\$A\$c\$C\$\?/
describe HPTSUKUCCHATTA "HPchokottotsukucchatta"
score HPTSUKUCCHATTA 0.5
body ASOBINIKITENE /M7\$S\$KMh\$F\$M/
describe ASOBINIKITENE "ASOBINIKITENE"
score ASOBINIKITENE 0.1
meta LOVE2HOMUPEWAARUDO FAKEDMSOE && OSOKUNATTEGOMEN && HPTSUKUCCHATTA && ASOBINIKITENE
describe LOVE2HOMUPEWAARUDO FAKEDMSOE && OSOKUNATTEGOMEN && HPTSUKUCCHATTA && ASOBINIKITENE
score LOVE2HOMUPEWAARUDO 8.0
score HOT_NASTY 2.0
score BIG_FONT 2.0
score RATWARE_JIXING 10.0
score NIGERIAN_TRANSACTION_1 2.0
score NIGERIAN_TRANSACTION_2 2.0
score SPAM_PHRASE_03_05 2.0
score USER_AGENT_OE 2.0
score USER_AGENT_THEBAT 7.0
score RISK_FREE 2.0
score RATWARE_OE_MALFORMED 4.1
score CLICK_BELOW 1.0
score CLICK_HERE_LINK 1.0
# score US_DOLLARS_2 1.0
# score US_DOLLARS_3 1.0
# score US_DOLLARS_4 1.0
score RATWARE_DIFFOND 10.0
score FOR_INSTANT_ACCESS 1.0
score INSTANT_ACCESS 1.0
score MICROSOFT_EXECUTABLE 4.0
score CHARSET_FARAWAY_HEADERS 4.0
score PORN_4 4.0
score UPPERCASE_75_100 1.0
body CLICK_HERE_TO_UNSUB /^Click.+here.+to.+unsubscribe from this list/i
describe CLICK_HERE_TO_UNSUB Click here to unsubscribe from this list
score CLICK_HERE_TO_UNSUB 2.0
meta CLICK_HTML (CTYPE_JUST_HTML || MIME_HTML_ONLY) && CLICK_HERE_TO_UNSUB
describe CLICK_HTML (CTYPE_JUST_HTML || MIME_HTML_ONLY) && CLICK_HERE_TO_UNSUB
score CLICK_HTML 2.0
header SPAMMERS_BOUNDARY Content-Type =~ /multipart\/mixed; boundary="===_[A-Z][a-zA-Z]{5}_000_1[a-z]{13}"/
describe SPAMMERS_BOUNDARY possibly spam mailer's boundary format
score SPAMMERS_BOUNDARY 5.0
header MICROSOFT_ZIPPEDEXE Content-Type =~ /application\/x-compressed;.+name=".+.zip"/i
describe MICROSOFT_ZIPPEDEXE possibly ZIP'ed Microsoft Windows virus
score MICROSOFT_ZIPPEDEXE 7.0
# Sorry, below rules are under construction. 03/07/06 by [yoh]
# rawbody MICROSOFT_ZIPPEDEXE2 /application\/x-.*compressed;.+name=".+.zip"/i
# body MICROSOFT_ZIPPEDEXE2 /application\/x\-zip\-compressed./i
# describe MICROSOFT_ZIPPEDEXE2 possibly ZIP'ed Microsoft Windows virus
# score MICROSOFT_ZIPPEDEXE2 0.1
# body MICROSOFT_ZIPPEDEXE3 /name/i
# describe MICROSOFT_ZIPPEDEXE3 possibly ZIP'ed Microsoft Windows virus
# score MICROSOFT_ZIPPEDEXE3 0.1
# meta MICROSOFT_ZIPPEDEXE4 MICROSOFT_ZIPPEDEXE2 && MICROSOFT_ZIPPEDEXE3
# describe MICROSOFT_ZIPPEDEXE4 MICROSOFT_ZIPPEDEXE2 && MICROSOFT_ZIPPEDEXE3
# score MICROSOFT_ZIPPEDEXE4 7.0
header MICROSOFT_EXEC2 Content-Type =~ /application\/x-msdownload;.+name=".+.exe"/i
describe MICROSOFT_EXEC2 possibly Microsoft Windows virus
score MICROSOFT_EXEC2 7.0
meta NIGERIAN_SCAM2 NIGERIAN_TRANSACTION_1 && MIMEQENC && US_DOLLARS_2 && US_DOLLARS_3
describe NIGERIAN_SCAM2 NIGERIAN_TRANSACTION_1 && MIMEQENC && US_DOLLARS_2 && US_DOLLARS_3
score NIGERIAN_SCAM2 4.0
rawbody OPTI_TARGET /^This is an Opti-Target network mailing\. You were subscribed to this/
describe OPTI_TARGET This is an Opti-Target network mailing. You were subscribed to this
score OPTI_TARGET 3.0
body OPTOUTINSTRUCTIONS /Opt-Out Instructions/
describe OPTOUTINSTRUCTIONS Opt-Out Instructions
score OPTOUTINSTRUCTIONS 1.0
body AGAINST_SENDING_UNSOLICITED /We are strongly against sending unsolicited emails to those/
describe AGAINST_SENDING_UNSOLICITED We are strongly against sending unsolicited emails to those
score AGAINST_SENDING_UNSOLICITED 2.0
meta OPTOUT5 OPTOUTINSTRUCTIONS && AGAINST_SENDING_UNSOLICITED
describe OPTOUT5 OPTOUTINSTRUCTIONS && AGAINST_SENDING_UNSOLICITED
score OPTOUT5 3.0
meta NIGERIAN_SCAM3 NIGERIAN_TRANSACTION_1 && RISK_FREE && LINES_OF_YELLING && US_DOLLARS_3
describe NIGERIAN_SCAM3 NIGERIAN_TRANSACTION_1 && RISK_FREE && LINES_OF_YELLING && US_DOLLARS_3
score NIGERIAN_SCAM3 4.0
full DREAMWIZ /dreamwiz\.com/
describe DREAMWIZ http://my.dreamwiz.com/
score DREAMWIZ 5.0
header HANMAIL_NET Reply-To =~ /\@hanmail\.net/
describe HANMAIL_NET hanmail.net
score HANMAIL_NET 2.0
meta PORN_HTML CLICK_HERE_LINK && PORN_4
describe PORN_HTML CLICK_HERE_LINK && PORN_4
score PORN_HTML 4.0
# meta PORN_HTML2 PORN_4 && CTYPE_JUST_HTML
# describe PORN_HTML2 PORN_4 && CTYPE_JUST_HTML
# score PORN_HTML2 2.0
body USE_THIS_LINK /Use this link and we will not contact your email .+ at .+ again/i
describe USE_THIS_LINK Use this link and we will not contact your email ++++ at ++++.+++ again
score USE_THIS_LINK 2.0
body AS_SEEN_ON_NBC /As seen (on )*NBC, CBS, (and )*CNN, and even Oprah[!.]/i
describe AS_SEEN_ON_NBC As seen on NBC, CBS, and CNN, and even Oprah!
score AS_SEEN_ON_NBC 3.0
body THIS_EMAIL_SURPRISE /I presume this email will not be a surprise to you/i
describe THIS_EMAIL_SURPRISE I presume this email will not be a surprise to you
score THIS_EMAIL_SURPRISE 3.0
meta NIGERIAN_SCAM4 THIS_EMAIL_SURPRISE && (US_DOLLARS_2 || US_DOLLARS_3 || US_DOLLARS_4)
describe NIGERIAN_SCAM4 THIS_EMAIL_SURPRISE && (US_DOLLARS_2 || US_DOLLARS_3 || US_DOLLARS_4)
score NIGERIAN_SCAM4 3.0
rawbody FOXMAIL /^X-Mailer: FoxMail 3\.11 Release \[cn\]/
describe FOXMAIL X-Mailer: FoxMail 3.11 Release [cn]
score FOXMAIL 8.0
rawbody FUKUGYOU /I{6H/
describe FUKUGYOU FUKUGYOU
score FUKUGYOU 0.5
rawbody SIDEBUSINESS /%5%\$%I%S%8%M%9/
describe SIDEBUSINESS SIDEBUSINESS
score SIDEBUSINESS 1.0
rawbody BUSINESSJOUHOU /%S%8%M%9>pJs/
describe BUSINESSJOUHOU BUSINESSJOUHOU
score BUSINESSJOUHOU 1.0
body FETIGAZOU /%U%'%A2hA\|/
describe FETIGAZOU FETIGAZOU
score FETIGAZOU 2.0
body RAPEGAZOU /%l%\$%W2hA\|/
describe RAPEGAZOU RAPEGAZOU
score RAPEGAZOU 3.0
body CHIRAGAZOU /%A%i2hA\|/
describe CHIRAGAZOU CHIRAGAZOU
score CHIRAGAZOU 2.0
body IDOLOTAKARA /%"%\$%I%k\$\*Ju/
describe IDOLOTAKARA IDOLOTAKARA
score IDOLOTAKARA 2.0
body KONKAIKAGIRI /\$3\$N%a!<%k\$O:\#2s8B\$j/
describe KONKAIKAGIRI KONKAIKAGIRI is NOT one-time mailing.
score KONKAIKAGIRI 2.0
body YOU_RECEIVED_THIS_EMAIL /You received this email because you signed up/i
describe YOU_RECEIVED_THIS_EMAIL You received this email because you signed up
score YOU_RECEIVED_THIS_EMAIL 2.5
header XMIMETRACK X-MIMETrack =~ /Serialize by Router on .*\(Release /
describe XMIMETRACK Serialize by Router on ...(Release ...
score XMIMETRACK 1.0
# Special thanks to Hisaaki SHIBATA-san: 2003/04/04
header UNDISCLOSED To =~ /undisclosed-recipients*:/i
describe UNDISCLOSED Undisclosed-recipients
score UNDISCLOSED 2.00
meta PORN_SPAM1 (HOT_NASTY || LARGE_COLLECTION || NASTY_GIRLS || SPAM_PHRASE_01_02) && USE_THIS_LINK
describe PORN_SPAM1 (HOT_NASTY || LARGE_COLLECTION || NASTY_GIRLS || SPAM_PHRASE_01_02) && USE_THIS_LINK
score PORN_SPAM1 7.0
meta SUBJ_SPACES_UNIQID SUBJ_HAS_SPACES && SUBJ_HAS_UNIQ_ID
describe SUBJ_SPACES_UNIQID SUBJ_HAS_SPACES && SUBJ_HAS_UNIQ_ID
score SUBJ_SPACES_UNIQID 6.4
meta BROKEN_HEADERS DATE_MISSING && FROM_MISSING && MISSING_HEADERS && SUBJ_MISSING
describe BROKEN_HEADERS DATE_MISSING && FROM_MISSING && MISSING_HEADERS && SUBJ_MISSING
score BROKEN_HEADERS 8.0
meta MICROSOFT_VIRUS MICROSOFT_EXECUTABLE && (MIME_HTML_NO_CHARSET || MULTIPART_ALTERNATIVE || MIMEQENC)
describe MICROSOFT_VIRUS MICROSOFT_EXECUTABLE && (MIME_HTML_NO_CHARSET || MULTIPART_ALTERNATIVE || MIMEQENC)
score MICROSOFT_VIRUS 8.0
meta MIMEHEXQENC MIME_BOUND_MANY_HEX && MIMEQENC
describe MIMEHEXQENC MIME_BOUND_MANY_HEX && MIMEQENC
score MIMEHEXQENC 1.1
meta MIMEHEXLONGQ MIME_BOUND_MANY_HEX && MIME_LONG_LINE_QP
describe MIMEHEXLONGQ MIME_BOUND_MANY_HEX && MIME_LONG_LINE_QP
score MIMEHEXLONGQ 2.0
meta LOTSCCSPAMADDR LOTS_OF_CC_LINES && MAILTO_TO_SPAM_ADDR
describe LOTSCCSPAMADDR LOTS_OF_CC_LINES && MAILTO_TO_SPAM_ADDR
score LOTSCCSPAMADDR 2.0
meta IDMTAXPRIHIGH MSG_ID_ADDED_BY_MTA_2 && X_PRIORITY_HIGH
describe IDMTAXPRIHIGH MSG_ID_ADDED_BY_MTA_2 && X_PRIORITY_HIGH
score IDMTAXPRIHIGH 2.0
body FUJITAYUZAN /F\#EDM\:\;3/
describe FUJITAYUZAN FUJITAYUZAN
score FUJITAYUZAN 0.5
body HIROSHIMAKENCHIJI /9\-Eg8\)CN\;v/
describe HIROSHIMAKENCHIJI HIROSHIMAKENCHIJI
score HIROSHIMAKENCHIJI 0.5
body NOMOTODENO /\$N85\$G\$N/
describe NOMOTODENO NOMOTODENO
score NOMOTODENO 0.1
body OSOROSHIIHANASHI /62\$m\$7\$\$OC/
describe OSOROSHIIHANASHI OSOROSHIIHANASHI
score OSOROSHIIHANASHI 0.1
body GYOUSEISOSHO /9T\@\/AJ\>Y/
describe GYOUSEISOSHO GYOUSEISOSHO
score GYOUSEISOSHO 0.1
body SOKURYOSHI /B\,NL\;N/
describe SOKURYOSHI SOKURYOSHI
score SOKURYOSHI 0.1
meta FUJITACHIJI FUJITAYUZAN && HIROSHIMAKENCHIJI
describe FUJITACHIJI FUJITAYUZAN && HIROSHIMAKENCHIJI
score FUJITACHIJI 1.0
meta CHIJINOMOTO HIROSHIMAKENCHIJI && NOMOTODENO
describe CHIJINOMOTO HIROSHIMAKENCHIJI && NOMOTODENO
score CHIJINOMOTO 1.0
meta MOTODEOSORO NOMOTODENO && OSOROSHIIHANASHI
describe MOTODEOSORO NOMOTODENO && OSOROSHIIHANASHI
score MOTODEOSORO 1.0
meta OSOROGYOUSEI OSOROSHIIHANASHI && GYOUSEISOSHO
describe OSOROGYOUSEI OSOROSHIIHANASHI && GYOUSEISOSHO
score OSOROGYOUSEI 1.0
meta FUJITASPAM1 FUJITACHIJI && CHIJINOMOTO && MOTODEOSORO
describe FUJITASPAM1 FUJITACHIJI && CHIJINOMOTO && MOTODEOSORO
score FUJITASPAM1 3.0
meta FUJITASPAM2 FUJITACHIJI && MOTODEOSORO && OSOROGYOUSEI
describe FUJITASPAM2 FUJITACHIJI && MOTODEOSORO && OSOROGYOUSEI
score FUJITASPAM2 3.0
meta MULTIMIME MULTIPART_ALTERNATIVE && (MIME_BOUND_DIGITS_7 || MIME_BOUND_DIGITS_4)
describe MULTIMIME MULTIPART_ALTERNATIVE && (MIME_BOUND_DIGITS_7 || MIME_BOUND_DIGITS_4)
score MULTIMIME 3.0
header NIKKEIBP From =~ /nikkeibp.co.jp/
describe NIKKEIBP nikkeibp.co.jp
score NIKKEIBP -10
# Thanks to: SHIBATA Hisaaki san
body AFAF /(zimbabwe|nigeria|angola|south afric|Sierra|UNITA)/i
describe AFAF Afaf
score AFAF 1.5
# following "OBFUSCATING_COMMENT"
body OBFUSCATING_COMMENT2 /(<\![[:print:]]+>).+\1.+\1.+\1.+\1/
describe OBFUSCATING_COMMENT2 HTML comments which obfuscate text
score OBFUSCATING_COMMENT2 4.0
rawbody OBFUSCATING_COMMENT3 /<\!--[a-zA-Z0-9]+-->/
describe OBFUSCATING_COMMENT3 HTML comments which obfuscate text
score OBFUSCATING_COMMENT3 2.0
# body FAKEWORDEMAIL /em\@il/i
# describe FAKEWORDEMAIL em@il
# score FAKEWORDEMAIL 0.5
#
# body FAKEWORDEXTENTION /extensi0n/i
# describe FAKEWORDEXTENTION extensi0n
# score FAKEWORDEXTENTIONS 0.5
#
# body FAKEWORDPLEASE /Ple\@se/i
# describe FAKEWORDPLEASE Ple@se
# score FAKEWORDPLEASE 0.5
#
# body FAKEWORDREMOVE /rem0ve/i
# describe FAKEWORDREMOVE rem0ve
# score FAKEWORDREMOVE 0.5
#
# body FAKEWORDPLEASEREMOVE /Ple\@se.+rem0ve:/i
# describe FAKEWORDPLEASEREMOVE Ple@se rem0ve:
# score FAKEWORDPLEASEREMOVE 1.5
#
# body FAKEWORDNO /N0/i
# describe FAKEWORDNO N0
# score FAKEWORDNO 0.5
#
# body FAKEWORDTRANSFER /tr\@nsfer/i
# describe FAKEWORDTRANSFER tr@nsfer
# score FAKEWORDTRANSFER 0.5
#
# rawbody REMOVEDOMAINSFORPEOPLE /^http\:\/\/www.domainsforpeople.com\/cgi\-bin\/off_list\.pl/i
# describe REMOVEDOMAINSFORPEOPLE http://www.domainsforpeople.com/cgi-bin/off_list.pl
# score REMOVEDOMAINSFORPEOPLE 1.5
#
# meta DOMAINSFORPEOPLE REMOVEDOMAINSFORPEOPLE && (FAKEWORDEMAIL || FAKEWORDEXTENTION || FAKEWORDPLEASE || FAKEWORDREMOVE || FAKEWORDNO || FAKEWORDTRANSFER)
# describe DOMAINSFORPEOPLE REMOVEDOMAINSFORPEOPLE && (FAKEWORDEMAIL || FAKEWORDEXTENTION || FAKEWORDPLEASE || FAKEWORDREMOVE || FAKEWORDNO || FAKEWORDTRANSFER)
# score DOMAINSFORPEOPLE 3.0
rawbody FAKEDWORD_ATMARK /(^| |\r|\n)[A-Za-z]{0,}(\@[A-Za-z]+){1,}(\.{0,1}$| |[:;\r\n])/
describe FAKEDWORD_ATMARK ex. em@il (this rule is only for body)
score FAKEDWORD_ATMARK 0.5
# full FAKEDWORD_ZERO /((^)|( ))[A-Za-z]{0,}(0[A-Za-z]+){1,}(\.{0,1}$| |[:;\r\n])/
full FAKEDWORD_ZERO /( |\r|\n)[A-Za-z]{0,}(0[A-Za-z]+){1,}(\.{0,1}$| |[:;\r\n])/
describe FAKEDWORD_ZERO ex. Cust0mer
score FAKEDWORD_ZERO 0.5
full FAKEDWORD_ONE /( |\r|\n)[A-Za-z]{0,}(1[A-Za-z]+){1,}(\.{0,1}$| |[:;\r\n])/
describe FAKEDWORD_ONE ex. l1st
score FAKEDWORD_ONE 0.5
full FAKEDWORD_EXCLAMATION /( |\r|\n)[A-Za-z]{0,}(\![A-Za-z]+){1,}(\.{0,1}$| |[:;\r\n])/
describe FAKEDWORD_EXCLAMATION ex. MED!C!NE
score FAKEDWORD_EXCLAMATION 0.5
full FAKEDWORD_VERTICALLINE /( |\r|\n)[A-Za-z]{0,}(\|[A-Za-z]+){1,}(\.{0,1}$| |[:;\r\n])/
describe FAKEDWORD_VERTICALLINE ex. REM|O|VED
score FAKEDWORD_VERTICALLINE 0.5
body GAPPY_REM0VED / R E M 0 V E D /
describe GAPPY_REM0VED R E M 0 V E D
score GAPPY_REM0VED 1.5
# special thanks to: R.Takashi ISHIOKA-san! 2003/07/16
body SJIS_SOSHINSHA /\221\227\220M\216\322/
describe SJIS_SOSHINSHA soushinsha using sjis
score SJIS_SOSHINSHA 0.1
meta FAKED_SJISBODY1 SJIS_SOSHINSHA && ISO2022JP_BODY
describe FAKED_SJISBODY1 SJIS_SOSHINSHA && ISO2022JP_BODY
score FAKED_SJISBODY1 5.0
# body SJIS_URAVIDEO /\227\240\203r\203f\203\111/
# body SJIS_URAVIDEO /\227.\203r\203f\203\111/
body SJIS_URAVIDEO /\x97.\x83\x72\x83\x66\x83\x49/
describe SJIS_URAVIDEO uravideo using sjis
score SJIS_URAVIDEO 0.5
body SJIS_SAISHINRYUSHUTSU /\x8d\xc5\x90\x56\x97\xac\x8f\x6f/
describe SJIS_SAISHINRYUSHUTSU saishinryushutsu using sjis
score SJIS_SAISHINRYUSHUTSU 0.5
body SJIS_BURUSERA /\x83\x75\x83\x8b\x83\x5a\x83\x89/
describe SJIS_BURUSERA burusera using sjis
score SJIS_BURUSERA 0.5
body SJIS_SHIROUTOTOUKOU /\x91\x66\x90\x6c\x93\x8a\x8d\x65/
describe SJIS_SHIROUTOTOUKOU shiroutotoukou using sjis
score SJIS_SHIROUTOTOUKOU 0.5
body SJIS_YOUMONO /\x97\x6d\x95\xa8/
describe SJIS_YOUMONO youmono using sjis
score SJIS_YOUMONO 0.5
body SJIS_TOUSATSU /\x93\x90\x8e\x42/
describe SJIS_TOUSATSU tousatsu using sjis
score SJIS_TOUSATSU 0.5
body SJIS_LOLIKEI /\x83\x8d\x83\x8a\x8c\x6e/
describe SJIS_LOLIKEI lolikei using sjis
score SJIS_LOLIKEI 0.5
body SJIS_ZENKAKU_SM /\x82\x72\x82\x6c/
describe SJIS_ZENKAKU_SM SM in zenkaku using sjis
score SJIS_ZENKAKU_SM 0.5
meta PORN_SJIS (SJIS_BURUSERA||SJIS_LOLIKEI||SJIS_SAISHINRYUSHUTSU||SJIS_SHIROUTOTOUKOU||SJIS_TOUSATSU||SJIS_URAVIDEO||SJIS_YOUMONO||SJIS_ZENKAKU_SM)&&ISO2022JP_BODY
describe PORN_SJIS (SJIS_BURUSERA||SJIS_LOLIKEI||SJIS_SAISHINRYUSHUTSU||SJIS_SHIROUTOTOUKOU||SJIS_TOUSATSU||SJIS_URAVIDEO||SJIS_YOUMONO||SJIS_ZENKAKU_SM)&&ISO2022JP_BODY
score PORN_SJIS 5.0
body SJIS_SHUUDANSTALKER /\x8f\x57\x92\x63\x83\x58\x83\x67\x81\x5b\x83\x4a\x81\x5b/
describe SJIS_SHUUDANSTALKER Shuudan Stalker
score SJIS_SHUUDANSTALKER 0.5
body SJIS_HONOMEKASHI /\x81\x75\x82\xd9\x82\xcc\x82\xdf\x82\xa9\x82\xb5\x81\x76\x82\xc6\x82\xcd/
describe SJIS_HONOMEKASHI Honomekashi Toha
score SJIS_HONOMEKASHI 0.5
header HOSYOU_JPSPAM Received =~ /\(HELO hosyou/
describe HOSYOU_JPSPAM ZAITAKUBUSINESS type Japanese spammer
score HOSYOU_JPSPAM 7.0
body SHOUKOMISEMASU /\>Z5r.+8\+\$\;\$\^\$9/
describe SHOUKOMISEMASU SHOUKO MISEMASU
score SHOUKOMISEMASU 2.0
body MENSEKIJIKOU /LH\@U\;v9\`/
describe MENSEKIJIKOU MENSEKIJIKOU
score MENSEKIJIKOU 0.5
body ZAITAKU /\:_Bp/
describe ZAITAKU ZAITAKU
score ZAITAKU 0.5
body BUSINESS /%S%8%M%9/
describe BUSINESS BUSINESS
score BUSINESS 0.5
body SHUUNYUU /\<\}F\~/
describe SHUUNYUU SHUUNYUU
score SHUUNYUU 0.5
body HOSYOU_590MYEN /\#52\/\#9\@iK\|1_/
describe HOSYOU_590MYEN 590000000yen
score HOSYOU_590MYEN 2.0
meta HOSYOUSPAM2 HOSYOU_JPSPAM && HOSYOU_590MYEN
describe HOSYOUSPAM2 HOSYOU_JPSPAM && HOSYOU_590MYEN
score HOSYOUSPAM2 5.0
body NO_LONGER_WISH /but if you no longer wish to receive our emails please:/i
describe NO_LONGER_WISH but if you no longer wish to receive our emails please:
score NO_LONGER_WISH 1.5
body ENJOYED_RECEIVING_EMAIL /We hope you enjoyed receiving this email/i
describe ENJOYED_RECEIVING_EMAIL We hope you enjoyed receiving this email
score ENJOYED_RECEIVING_EMAIL 1.0
meta ENJOYED_NO_LONGER NO_LONGER_WISH && ENJOYED_RECEIVING_EMAIL
describe ENJOYED_NO_LONGER NO_LONGER_WISH && ENJOYED_RECEIVING_EMAIL
score ENJOYED_NO_LONGER 2.5
body SOBIG_BODY /^(Please ){0,1}See the attached file for details/i
describe SOBIG_BODY Please see the attached file for details.
score SOBIG_BODY 1.0
header SOBIG_HEADER Content-Type =~ /multipart\/mixed;.+boundary="_NextPart_/
describe SOBIG_HEADER Probably Sobig.F's multipart header
score SOBIG_HEADER 0.1
full SOBIG_HEADER2 /\nContent-Type: multipart\/mixed;\n\tboundary="_NextPart_/
describe SOBIG_HEADER2 Probably Sobig.F's multipart header
score SOBIG_HEADER2 0.1
meta SOBIG_F SOBIG_BODY && (SOBIG_HEADER || SOBIG_HEADER2)
describe SOBIG_F SOBIG_BODY && (SOBIG_HEADER || SOBIG_HEADER2)
score SOBIG_F 8.0
uri OFF_LIST_CGI /www\..+\.com\/cgi(-bin){0,1}\/off_list\.(cgi|pl)/
describe OFF_LIST_CGI www.????.com/cgi-bin/off_list.cgi
score OFF_LIST_CGI 1.0
meta FAKEDWORD_OFFLIST (FAKEDWORD_ATMARK|| FAKEDWORD_ZERO || FAKEDWORD_ONE || FAKEDWORD_EXCLAMATION || FAKEDWORD_VERTICALLINE) && OFF_LIST_CGI
describe FAKEDWORD_OFFLIST (FAKEDWORD_ATMARK|| FAKEDWORD_ZERO || FAKEDWORD_ONE || FAKEDWORD_EXCLAMATION || FAKEDWORD_VERTICALLINE) && OFF_LIST_CGI
score FAKEDWORD_OFFLIST 5.0
header OBFUS_JP_TO To =~ /=\?ISO-2022-JP\?B\?\?=</
describe OBFUS_JP_TO obfuscating To: address in Japanese Base64 encoding
score OBFUS_JP_TO 4.0
meta SUNFINANCE_1 ISO2022JP_BODY && OBFUS_JP_TO
describe SUNFINANCE_1 ISO2022JP_BODY && OBFUS_JP_TO
score SUNFINANCE_1 3.0
header X_MAILER_PRESENT exists:X-Mailer
describe X_MAILER_PRESENT exists:X-Mailer
score X_MAILER_PRESENT 0.1
meta SUNFINANCE_2 ISO2022JP_CHARSET && OBFUS_JP_TO && !(X_MAILER_PRESENT)
describe SUNFINANCE_2 ISO2022JP_CHARSET && OBFUS_JP_TO && !(X_MAILER_PRESENT)
score SUNFINANCE_2 2.4
header X_MTA X-MTA =~/MELON SMTP Server version/
describe X_MTA X-MTA: MELON SMTP Server version 1.34.0.0
score X_MTA 7.0
header THREAD_INDEX exists:thread-index
describe THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig==
score THREAD_INDEX 1.0
header THREAD_TOPIC exists: Thread-Topic
describe THREAD_TOPIC Thread-Topic: ...(Japanese Subject)...
score THREAD_TOPIC 1.0
rawbody ILLEGALSTR01 /^([a-z]{80,}, ){3,}[a-z]{80,}$/
describe ILLEGALSTR01 illegal strings that seems to obfuscate bayesian filter
score ILLEGALSTR01 2.0
rawbody ILLEGALSTR02 /^([a-zA-Z0-9]{50,} +){3,}[a-zA-Z0-9]{20,}$/
describe ILLEGALSTR02 illegal strings that seems to obfuscate bayesian filter
score ILLEGALSTR02 2.0
full ILLEGALSTR03 /([a-z]+ [a-z]+, [a-z]+, [a-z]+ \. [a-z]+ [a-z]+ [a-z]+, [a-z]+, [a-z]+ \. [a-z]+[\r\n]){30,}/
describe ILLEGALSTR03 illegal strings that seems to obfuscate bayesian filter
score ILLEGALSTR03 2.0
meta CDCHEAP ILLEGALSTR01 && ILLEGALSTR03 && MULTIPART_ALTERNATIVE && HTML_MESSAGE
describe CDCHEAP selling warez. (ILLEGALSTR01,03,MULTIPART_ALTERNATIVE,HTML_MESSAGE)
score CDCHEAP 3.5
full ILLEGALSTR04 /([a-z]+[ \n][a-z]+[ \n][a-z]+,[ \n][a-z]+,[ \n][a-z]+[ \n]\.[ \n]){30,}/
describe ILLEGALSTR04 illegal strings that seems to obfuscate bayesian filter
score ILLEGALSTR04 3.5
uri ILLEGALALIAS01 /http:\/\/([a-z]+\.){4,}[a-z]+=([a-z]+\.){4,}[a-z]{2,4}\//
describe ILLEGALALIAS01 hostname has very long random strings
score ILLEGALALIAS01 5.0
# header POSTFIX_ERRFROM From =~/MAILER-DAEMON@.+ \(Mail Delivery System\)$/
# describe POSTFIX_ERRFROM From: is Postfix type delivery error message
# score POSTFIX_ERRFROM 0.1
header POSTFIX_ERRCONT Content-Type =~/^multipart\/report; report-type=delivery-status;.+boundary=/
describe POSTFIX_ERRCONT Content-Type is Postfix/Sendmail type delivery error message
score POSTFIX_ERRCONT 0.1
meta POSTFIXBOUNCE POSTFIX_ERRCONT && ILLEGALSTR04
describe POSTFIXBOUNCE bounce spam using a footstool MTA Postfix
score POSTFIXBOUNCE 7.0
# meta POSTFIX_DELIVERRSPAM POSTFIX_ERRFROM && POSTFIX_ERRCONT && X_KOREAN_RELAY
# describe POSTFIX_DELIVERRSPAM POSTFIX_ERRFROM && POSTFIX_ERRCONT && X_KOREAN_RELAY
# score POSTFIX_DELIVERRSPAM 3.5
# Subject =~/Mail delivery failed: returning message to sender$/
# describe EXIM_ERRSUBJ Subject: is Exim type delivery error message
# score EXIM_ERRSUBJ 0.1
# header EXIM_WARNSUBJ Subject =~/Warning: message [a-zA-Z0-9]+-[a-zA-Z0-9]+-[0-9]{2,2} delayed 24 hours$/
# describe EXIM_WARNSUBJ Subject: is Exim type delivery warning message
# score EXIM_WARNSUBJ 0.1
header EXIM_ERRWARN Received =~/ with local \(Exim .+\)/
describe EXIM_ERRWARN bounce mail from Exim
score EXIM_ERRWARN 0.1
meta EXIMBOUNCE EXIM_ERRWARN && ILLEGALSTR04
describe EXIMBOUNCE bounce spam using a footstool MTA Exim
score EXIMBOUNCE 7.0
header QMAIL_DELIVERR Received =~/\(qmail [0-9]+ invoked for bounce\); /
describe QMAIL_DELIVERR bounce mail from qmail
score QMAIL_DELIVERR 0.1
meta QMAILBOUNCE QMAIL_DELIVERR && ILLEGALSTR04
describe QMAILBOUNCE bounce spam using a footstool MTA qmail
score QMAILBOUNCE 7.0
header MSES_ERRXM X-Mailer =~ /Internet Mail Service \([0-9.]+\)$/
describe MSES_ERRXM X-Mailer: is Microsoft Exchange Server type delivery error message
score MSES_ERRXM 1.0
meta MSBOUNCE MSES_ERRXM && ILLEGALSTR04
describe MSBOUNCE bounce spam using a footstool MTA MS Exchane Server
score MSBOUNCE 7.0
body YOURFINANCESTHEEASYWAY /Your Finances The Easy Way\!/
describe YOURFINANCESTHEEASYWAY Your Finances The Easy Way!
score YOURFINANCESTHEEASYWAY 1.0
body IFYOUWISHTOBEDELETED /If you wish to be deleted from this list, please .*CLICK/
describe IFYOUWISHTOBEDELETED If you wish to be deleted from this list, please CLICK
score IFYOUWISHTOBEDELETED 2.0
meta LIMITED_IFYOUWISH LIMITED_TIME_ONLY && IFYOUWISHTOBEDELETED
describe LIMITED_IFYOUWISH LIMITED_TIME_ONLY && IFYOUWISHTOBEDELETED
score LIMITED_IFYOUWISH 3.0
body WAREZSTR01 /MICROSOFT WINDOWS XP PROFESSIONAL .+Only \$50\!/
describe WAREZSTR01 MICROSOFT WINDOWS XP PROFESSIONAL - Only $50!
score WAREZSTR01 1.0
body WAREZSTR02 /Major titles from Microsoft and Adobe for Rock Bottom Prices\!/
describe WAREZSTR02 Major titles from Microsoft and Adobe for Rock Bottom Prices!
score WAREZSTR02 1.0
body WAREZSTR03 /re giving you these INSANE discounts because these are the/
describe WAREZSTR03 We're giving you these INSANE discounts because these are...
score WAREZSTR03 1.0
meta WAREZERRMSG WAREZSTR01 && WAREZSTR02 && WAREZSTR03 && POSTFIX_ERRCONT
describe WAREZERRMSG WAREZSTR01 && WAREZSTR02 && WAREZSTR03 && POSTFIX_ERRCONT
score WAREZERRMSG 3.0
score EMAIL_ATTRIBUTION -0.1
score BAYES_70 5.0
score BAYES_80 6.0
score BAYES_90 7.0
score BAYES_99 7.5
score MSGID_GOOD_EXCHANGE 0
score X_LIBRARY 4.3
score HTML_70_80 1.0
score UPPERCASE_25_50 0.5
score PGP_SIGNATURE 0
score USER_AGENT_MSN 0
score IN_REP_TO 0
ok_languages ja en
ok_locales ja en
# report_header 1
# use_terse_report 1
# rewrite_subject 0
#clear_report_template
#clear-terse-report-template
# score RCVD_IN_RBL 10
# score RCVD_IN_RSS 1
# score RCVD_IN_DUL 1
# score RCVD_IN_BL_SPAMCOP_NET 3
# -- RBL checking --
# Befor you use RBL checking, you have to install
# "Net::DNS - Perl DNS Resolver Module"
# ex. apt-get install libnet-dns-perl (Debian)
# 2004.04.23 by [yoh]
# http://improbable.org/chris/index.php?ID=109
header RCVD_IN_RFC_PM eval:check_rbl('relay', 'postmaster.rfc-ignorant.org.')
describe RCVD_IN_RFC_PM Received via a relay in postmaster.rfc-ignorant.org
score RCVD_IN_RFC_PM 1.5
header X_CHINESE_RELAY eval:check_rbl('relay', 'cn.rbl.cluecentral.net.')
describe X_CHINESE_RELAY Received via a relay in China
score X_CHINESE_RELAY 1.5
header X_KOREAN_RELAY eval:check_rbl('relay', 'korea.services.net.')
describe X_KOREAN_RELAY Received via a relay in Korea
score X_KOREAN_RELAY 0.0
# header X_MONKEY_FORMMAIL eval:check_rbl('relay', 'formmail.relays.monkeys.com.')
# describe X_MONKEY_FORMMAIL Received via relay in monkeys.com's open formmail scripts list
# score X_MONKEY_FORMMAIL 1.5
#
# header X_MONKEY_PROXY eval:check_rbl('relay', 'proxies.relays.monkeys.com.')
# describe X_MONKEY_PROXY Received via relay in monkeys.com's open proxy list
# score X_MONKEY_PROXY 1.5
#
# header X_MONKEY_PROXY eval:check_rbl('relay', 'spamhaus.relays.osirusoft.com.')
# describe X_MONKEY_PROXY Received via relay in Spamhaus Blacklist
# score X_MONKEY_PROXY 1.5
# Before you use njabl.org , you have to subscribe ML. http://njabl.org/use.html
#-# # Not Just Another BlackList tests from http://njabl.org/use.html
#-# header IN_NJABL_ORG rbleval:check_rbl('njabl','dnsbl.njabl.org.')
#-# describe IN_NJABL_ORG Received via a relay in dnsbl.njabl.org
#-# tflags IN_NJABL_ORG net
#-#
#-# header NJABL_OPEN_RELAY rbleval:check_rbl_results_for('njabl', '127.0.0.2')
#-# describe NJABL_OPEN_RELAY DNSBL: sender is Confirmed Open Relay
#-# tflags NJABL_OPEN_RELAY net
#-#
#-# header NJABL_DUL rbleval:check_rbl_results_for('njabl', '127.0.0.3')
#-# describe NJABL_DUL DNSBL: sender ip address in in a dialup block
#-# tflags NJABL_DUL net
#-#
#-# header NJABL_SPAM_SRC rbleval:check_rbl_results_for('njabl', '127.0.0.4')
#-# describe NJABL_SPAM_SRC DNSBL: sender is Confirmed Spam Source
#-# tflags NJABL_SPAM_SRC net
#-#
#-# header NJABL_MULTI_STAGE rbleval:check_rbl_results_for('njabl', '127.0.0.5')
#-# describe NJABL_MULTI_STAGE DNSBL: sent through multi-stage open relay
#-# tflags NJABL_MULTI_STAGE net
#-#
#-# header NJABL_CGI rbleval:check_rbl_results_for('njabl', '127.0.0.8')
#-# describe NJABL_CGI DNSBL: sender is an open formmail
#-# tflags NJABL_CGI net
#-#
#-# header NJABL_PROXY rbleval:check_rbl_results_for('njabl', '127.0.0.9')
#-# describe NJABL_PROXY DNSBL: sender is an open proxy
#-# tflags NJABL_PROXY net
#-#
#-# score IN_NJABL_ORG 0.38
#-# score NJABL_DUL 0.62
#-# score NJABL_MULTI_STAGE 0.75
#-# score NJABL_PROXY 3.00
#-# score NJABL_OPEN_RELAY 3.00
#-# score NJABL_CGI 1.50
#-# score NJABL_SPAM_SRC 3.00
# block.blars.org is not reliable. see http://check.jippg.org/rblchk.cgi
header RCVD_IN_BLARS eval:check_rbl('blars', 'block.blars.org.')
describe RCVD_IN_BLARS BLARS: in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS 0.0
tflags RCVD_IN_BLARS net
header RCVD_IN_BLARS_SPAM eval:check_rbl_sub('blars', '1')
describe RCVD_IN_BLARS_SPAM BLARS: Spam sending domain in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_SPAM 0.1
tflags RCVD_IN_BLARS_SPAM net
header RCVD_IN_BLARS_MULTI eval:check_rbl_sub('blars', '2')
describe RCVD_IN_BLARS_MULTI BLARS: Multi-hop relay in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_MULTI 0.1
tflags RCVD_IN_BLARS_MULTI net
header RCVD_IN_BLARS_DIALUP eval:check_rbl_sub('blars-notfirsthop', '4')
describe RCVD_IN_BLARS_DIALUP BLARS: Dynamic / Dialups in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_DIALUP 0.1
tflags RCVD_IN_BLARS_DIALUP net
header RCVD_IN_BLARS_HOOPS eval:check_rbl_sub('blars', '8')
describe RCVD_IN_BLARS_HOOPS BLARS: Wants spam complainers to jump through hoops in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_HOOPS 0.1
tflags RCVD_IN_BLARS_HOOPS net
header RCVD_IN_BLARS_ABUSE eval:check_rbl_sub('blars', '16')
describe RCVD_IN_BLARS_ABUSE BLARS: No working abuse address in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_ABUSE 0.1
tflags RCVD_IN_BLARS_ABUSE net
header RCVD_IN_BLARS_SPAM_WEB eval:check_rbl_sub('blars', '32')
describe RCVD_IN_BLARS_SPAM_WEB BLARS: Hosts spamers web sites in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_SPAM_WEB 0.0
tflags RCVD_IN_BLARS_SPAM_WEB net
header RCVD_IN_BLARS_SPAM_DROP eval:check_rbl_sub('blars', '64')
describe RCVD_IN_BLARS_SPAM_DROP BLARS: Hosts spammers email dropboxes in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_SPAM_DROP 0.0
tflags RCVD_IN_BLARS_SPAM_DROP net
header RCVD_IN_BLARS_HACK eval:check_rbl_sub('blars', '128')
describe RCVD_IN_BLARS_HACK BLARS: Breakin attempts in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_HACK 0.1
tflags RCVD_IN_BLARS_HACK net
header RCVD_IN_BLARS_SUE eval:check_rbl_sub('blars', '256')
describe RCVD_IN_BLARS_SUE BLARS: Sued or prosecuted DNSBL lister in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_SUE 0.1
tflags RCVD_IN_BLARS_SUE net
header RCVD_IN_BLARS_DOS eval:check_rbl_sub('blars', '512')
describe RCVD_IN_BLARS_DOS BLARS: DOS attack in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_DOS 0.0
tflags RCVD_IN_BLARS_DOS net
header RCVD_IN_BLARS_SPAM_WARE eval:check_rbl_sub('blars', '1024')
describe RCVD_IN_BLARS_SPAM_WARE BLARS: Supplier of spamware in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_SPAM_WARE 0.1
tflags RCVD_IN_BLARS_SPAM_WARE net
header RCVD_IN_BLARS_SPAM_SUPPORT eval:check_rbl_sub('blars', '2048')
describe RCVD_IN_BLARS_SPAM_SUPPORT BLARS: Knowingly supports spammers in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_SPAM_SUPPORT 0.1
tflags RCVD_IN_BLARS_SPAM_SUPPORT net
header RCVD_IN_BLARS_CARTOONEY eval:check_rbl_sub('blars', '4096')
describe RCVD_IN_BLARS_CARTOONEY BLARS: Legal threats in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_CARTOONEY 0.1
tflags RCVD_IN_BLARS_CARTOONEY net
header RCVD_IN_BLARS_HIJACK_RLY eval:check_rbl_sub('blars', '8192')
describe RCVD_IN_BLARS_HIJACK_RLY BLARS: Attempted mail relay exploits in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_HIJACK_RLY 0.1
tflags RCVD_IN_BLARS_HIJACK_RLY net
header RCVD_IN_BLARS_HIJACK_CGI eval:check_rbl_sub('blars', '16384')
describe RCVD_IN_BLARS_HIJACK_CGI BLARS: Attempted formmail exploits exploits in Blacklist / Blocklist block.blars.org
score RCVD_IN_BLARS_HIJACK_CGI 0.1
tflags RCVD_IN_BLARS_HIJACK_CGI net
# SpamAssassin local.cf for AHBL BlackList / BlockList
# "Old blackholes.2mbit.com resurrected as AHBL (dnsbl.ahbl.org)"
# URL: http://www.ahbl.org
header RCVD_IN_AHBL eval:check_rbl('AHBL', 'dnsbl.ahbl.org.')
describe RCVD_IN_AHBL AHBL: sender is listed in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL 1.5
tflags RCVD_IN_AHBL net header RCVD_IN_AHBL_UNKNOWN_1 eval:check_rbl_sub('AHBL', '127.0.0.1')
describe RCVD_IN_AHBL_UNKNOWN_1 AHBL: Unknown Category 1 in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_UNKNOWN_1 0.01
tflags RCVD_IN_AHBL_UNKNOWN_1 net
header RCVD_IN_AHBL_SMTP eval:check_rbl_sub('AHBL', '127.0.0.2')
describe RCVD_IN_AHBL_SMTP AHBL: Open SMTP relay in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_SMTP 0.5
tflags RCVD_IN_AHBL_SMTP net
header RCVD_IN_AHBL_PROXY eval:check_rbl_sub('AHBL', '127.0.0.3')
describe RCVD_IN_AHBL_PROXY AHBL: Open Proxy server in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_PROXY 0.5
tflags RCVD_IN_AHBL_PROXY net
header RCVD_IN_AHBL_SPAM eval:check_rbl_sub('AHBL', '127.0.0.4')
describe RCVD_IN_AHBL_SPAM AHBL: Spam Source in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_SPAM 1.5
tflags RCVD_IN_AHBL_SPAM net
header RCVD_IN_AHBL_RTB eval:check_rbl_sub('AHBL', '127.0.0.5')
describe RCVD_IN_AHBL_RTB AHBL: Real-Time Blocked in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_RTB 0.01
tflags RCVD_IN_AHBL_RTB net
header RCVD_IN_AHBL_FORMMAIL eval:check_rbl_sub('AHBL', '127.0.0.6')
describe RCVD_IN_AHBL_FORMMAIL AHBL: Abuseable Form Mail in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_FORMMAIL 0.5
tflags RCVD_IN_AHBL_FORMMAIL net
header RCVD_IN_AHBL_SPAM_SUPPORT eval:check_rbl_sub('AHBL', '127.0.0.7')
describe RCVD_IN_AHBL_SPAM_SUPPORT AHBL: Spam Supporter in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_SPAM_SUPPORT 0.5
tflags RCVD_IN_AHBL_SPAM_SUPPORT net
header RCVD_IN_AHBL_I_SPAM_SUPPORT eval:check_rbl_sub('AHBL', '127.0.0.8')
describe RCVD_IN_AHBL_I_SPAM_SUPPORT AHBL: Indirect Spam supporter in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_I_SPAM_SUPPORT 0.5
tflags RCVD_IN_AHBL_I_SPAM_SUPPORT net
header RCVD_IN_AHBL_ENDUSER eval:check_rbl_sub('AHBL', '127.0.0.9')
describe RCVD_IN_AHBL_ENDUSER AHBL: End User (non mail system) in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_ENDUSER 0.5
tflags RCVD_IN_AHBL_ENDUSER net
header RCVD_IN_AHBL_SOS eval:check_rbl_sub('AHBL-notfirsthop', '127.0.0.10')
describe RCVD_IN_AHBL_SOS AHBL: Shoot On Sight in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_SOS 0.5
tflags RCVD_IN_AHBL_SOS net
header RCVD_IN_AHBL_RFCI_PA eval:check_rbl_sub('AHBL', '127.0.0.11')
describe RCVD_IN_AHBL_RFCI_PA AHBL: Missing Postmaster or Abuse Address in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_RFCI_PA 0.5
tflags RCVD_IN_AHBL_RFCI_PA net
header RCVD_IN_AHBL_5XXI eval:check_rbl_sub('AHBL', '127.0.0.12')
describe RCVD_IN_AHBL_5XXI AHBL: Does not properly handle 5xx errors in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_5XXI 0.5
tflags RCVD_IN_AHBL_5XXI net
header RCVD_IN_AHBL_RFCI_MISC eval:check_rbl_sub('AHBL', '127.0.0.13')
describe RCVD_IN_AHBL_RFCI_MISC AHBL: Other Non-RFC Compliant in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_RFCI_MISC 0.5
tflags RCVD_IN_AHBL_RFCI_MISC net
header RCVD_IN_AHBL_MISC eval:check_rbl_sub('AHBL', '127.0.0.127')
describe RCVD_IN_AHBL_MISC AHBL: Misc (other) in BlackList / BlockList dnsbl.ahbl.org
score RCVD_IN_AHBL_MISC 0.5
tflags RCVD_IN_AHBL_MISC net
# Spamhaus XBL+SBL
header RCVD_IN_SBL_XBL eval:check_rbl('sblxbl', 'sbl-xbl.spamhaus.org.')
describe RCVD_IN_SBL_XBL Received via a relay in Spamhaus SBL+XBL
tflags RCVD_IN_SBL_XBL net
score RCVD_IN_SBL_XBL 1.5
# Listed in cbl.abuseat.org http://cbl.abuseat.org/
header RCVD_IN_CBL eval:check_rbl_txt('cbl', 'cbl.abuseat.org.')
describe RCVD_IN_CBL Received via a relay in cbl.abuseat.org
tflags RCVD_IN_CBL net
score RCVD_IN_CBL 1.5
# SORBS, list.dsbl.org, dnsbl.njabl.org have ISP's DHCP IP in Japan.
score RCVD_IN_SORBS 0.50
score RCVD_IN_SORBS_SOCKS 2.50
score RCVD_IN_SORBS_HTTP 2.50
score RCVD_IN_OPM 2.50
score RCVD_IN_OPM_HTTP_POST 2.50
score RCVD_IN_RFCI 3.0
score RCVD_IN_DSBL 0.5
score RCVD_IN_BL_SPAMCOP_NET 3.0
# score RCVD_IN_SBL 1.50
score RCVD_IN_NJABL_PROXY 0.50
score RCVD_IN_NJABL 0.50
score RCVD_IN_NJABL_RELAY 1.50
score DNS_FROM_RFCI_DSN 1.50
meta RCVD_COP_SORBS_DSBL RCVD_IN_BL_SPAMCOP_NET && (RCVD_IN_SORBS || RCVD_IN_DSBL)
describe RCVD_COP_SORBS_DSBL RCVD_IN_BL_SPAMCOP_NET && (RCVD_IN_SORBS || RCVD_IN_DSBL)
score RCVD_COP_SORBS_DSBL 3.0
spamassassinの起動
以下のコマンドを実行してspamassassinを起動しておく。
sudo /etc/init.d/spamassassin start
(razorのインストールに続く)
--yasuyuki
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
tjedcbxrgjrpmbwfuqah, http://www.ipisubnedu.com usqjqymubh
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-22 [Postfix] clamavのインストール
clamavをインストールするには以下を実行する。
sudo apt-get install arc bzip2 lzop lha arj unrar zoo cpio sudo apt-get install clamav clamav-base clamav-daemon clamav-freshclam sudo apt-get install perl-suid
設定ファイルは/etc/clamav/clamav.confである。ここではデフォルト設定のまま使ってみる。
amavisd-newからclamavを使えるようにするために、以下を実行する。
sudo usermod -G amavis clamav
念のためclamvを再起動しておく。
sudo /etc/init.d/clamav-daemon restart sudo /etc/init.d/clamav-freshclam restart
(spamassassinのインストールに続く)
--yasuyuki
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
tjedcbxrgjrpmbwfuqah, http://www.ipisubnedu.com usqjqymubh
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-20 [Postfix] amavisd-newをインストールしてPostfixから呼び出せるようにする
amavisd-newをインストールしてclamavとspamassassinを呼び出せるように設定する
まずamavisd-newをインストールする。(以下の例はすべてDebian環境)
sudo apt-get install amavisd-new
amavisd-newの設定ファイル、/etc/amavis/amavisd.confを編集する。
['Clam Antivirus clamd 0.65',
\&ask_daemon, ["CONTSCAN {}\n", '/var/run/clamav/clamd.ctl'],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
上記を記述して、amavisd-newからclamavを呼び出せるようにする。
また、デフォルトでspamassassinは起動しない設定になっているので、
@bypass_spam_checks_acl = qw( . ); # No default dependency on spamassassin
となっている行を、以下に示す通りにコメントアウトする。
#@bypass_spam_checks_acl = qw( . ); # No default dependency on spamassassin
また、必要に応じて以下を設定する。
$mydomain = 'example.com'
clamavによるウイルスフィルタ結果は以下の行で設定されている。
$final_virus_destiny = D_DISCARD; # (defaults to D_BOUNCE)
また、spamassassinによるSPAMフィルタ結果は以下の行で設定されている。
$final_spam_destiny = D_REJECT; # (defaults to D_REJECT)
これらはD_PASS、D_DISCARD、D_BOUNCE、D_REJECTの任意の値に変更することができる。
それぞれの意味はamavisd.confに書かれている。
Postfixを設定してamavisd-newを呼び出せるようにする。
Postfixのmain.cfに以下を記述する。
content_filter = smtp-amavis:[127.0.0.1]:10024
また、Postfixのmaster.cfに以下を記述する。
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
これでPostfixからamavisd-newを呼び出してコンテンツフィルタリングできるようになったが、まだclamavとspamassassinをインストールしていないのでPostfixを再起動してはいけない。
(clamavのインストールに続く)
--yasuyuki
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-17 [Postfix] Debianでpostfix+amavisd-new+clamav+spamassassinでウイルス/SPAMフィルタリング
DebianでPostfixからamavisd-newを呼び出して、MTAレベルでウイルスチェックやSPAMフィルタリングをしてみよう。
Postfixのmain.cf設定ファイルにはcontent_filterという設定値があり、 ここに外部フィルタの設定を記述すれば外部コンテンツフィルタ(メールフィルタ)を呼び出すことができる。
フィルタの経路は次の通り。
[1]
postfix ------> amavisd-new ←┐
<------ ││ [2] ↑ │[3]
[4] │└clamav ┘ │
└spamassassin┘
Postfix+amavisd-new+clamav+spamassassinの設定では以下が参考になる。
http://www.unix-power.jp/linux/postfix-virus.html
--yasuyuki
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-16 [quiz] 木の復元
また Quiz
データを列挙したリストが与えられたとしよう.
指定した順のトラバースするとこのリストが得られるような,木をすべて列挙せよ. ただし,木は節と葉にデータ(単純のために整数とする)のある二分木とする.
- pre-order のトラバース
- in-order のトラバース
- post-order のトラバース
のそれぞれの場合について考えよ.
たとえば,pre-order のトラバースを指定すると
[1,2,3,4,5]
というリストから
1 1 / \ / \ 2 5 と 2 3 / \ / \ 3 4 4 5
を列挙する.木の表現は入れ子構造で表現すればよく,上のように枝分れ の図にする必要はありません.
--nobsun
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-15 [Haskell] AA折れ線グラフ
3/14のquiz. 解答をおよせ頂きありがとう御座います.
私が用意していたのはこんな解.Haskellです.だいぶ不細工ですねぇ^^;
import List; import System
main = getArgs >>= putStr . unlines . plots . head
plots (x:xs) = case foldl acc (0,0,[(0,conv x)]) xs of
(l,h,pcs) -> transpose $ map reverse $ zipWith swapAt spls (map norm $ reverse pcs)
where norm (p,c) = (p-l,c); spls = repeat (replicate (h-l+1) ' ')
where acc (l,h,pcs@((p,'/'):_)) 'F' = (l,h ,(p ,'\\' ):pcs)
acc (l,h,pcs@((p,c) :_)) 'F' = (min l (p-1),h,(p-1,'\\' ):pcs)
acc (l,h,pcs@((p,'/'):_)) d = (l,max h (p+1),(p+1,conv d):pcs)
acc (l,h,pcs@((p,c) :_)) d = (l,h ,(p ,conv d):pcs)
swapAt ss (p,c) = case splitAt p ss of (xs,_:ys) -> xs ++ c:ys
conv 'R' = '/'; conv 'C' = '_'; conv 'F' = '\\'
実行例
$ runhaskell plots.hs RRCRFFRFCCRCFCFFCC
_/\ _
/ \/\__/ \_
/ \
\__
--nobsun
(追記:2006-03-17)
いろいろな解答.
- Gauche
- C++
- bf (!)
hanataniさんのいいですねぇ。 http://www.lab2.kuis.kyoto-u.ac.jp/~hanatani/tdiary/?date=20060315
hanataniさんのをすこしいじってみた。
すこし短かくなった?
効率がすこし良くなる?
import Data.List
main = do str <- getLine
let ((low,high,_),xs) = mapAccumL f (0,0,0) str
lvs = [high,high-1..low]
putStr $ unlines $ map (flip map xs . g) lvs
f (low,high,pos) 'R' = let pos'=pos+1 in ((low,max high pos',pos'),(pos,'/'))
f (low,high,pos) 'F' = let pos'=pos-1 in ((min low pos',high,pos'),(pos','\\'))
f (low,high,pos) _ = ((low,high,pos),(pos,'_'))
g l (l', c) | l == l' = c
| True = ' '
Perl5とPugsとJavascriptの例を挙げておきました。 http://blog.livedoor.jp/dankogai/archives/50423627.html <p>Dan the Lightheaded Linguist</p>
hanatani+nobsun版をもうちょっと短くしてみました。 http://hpcgi2.nifty.com/1to100pen/wiki/wiki.cgi?p=%CB%E8%C6%FCHaskell の 2006-03-24
Rubyで書いてみました http://taka.no32.tk/diary/20060407.html#p01
Squeak の Smalltalk と Ruby で書いてみました。 http://d.hatena.ne.jp/sumim/20060408/p1
Other developed countries also used foreign ownership restrictions to help them industrialize. ,
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-14 [quiz] AA折れ線グラフ
AAで折れ線グラフを書くというお題.
入力は'R','F','C'の3種類も文字からなる長さ1以上の文字列
- 'R'は上昇を表し,折れ線グラフの要素としては '/' (スラッシュ)1文字に対応
- 'F'は下降を表し,折れ線グラフの要素としては '\' (バックスラッシュ)1文字に対応
- 'C'は変化なしを表し,折れ線グラフの要素としては'_'(アンダスコア)1文字に対応
たとえば,
$ ./plot RCRFCRFFCCRFFRRCRRCCFRFRFF
とすると
__
/ \/\/\
_/\_/\ _/ \
/ \__/\ /
\/
が出力されるようなスクリプトを書け.
--nobsun
http://practical-scheme.net/wiliki/wiliki.cgi?%a4%d3 直球勝負です(ひねりがないとも言う)。
http://snak.tdiary.net/20060315.html#p02 (素人)Haskell版です。
http://www.jmuk.org/d/?path=2006/03/15#d15t01 あまり捻りはありません。
http://219.117.193.223/share/test/plot.html C++で直球勝負です。
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
tjedcbxrgjrpmbwfuqah, http://www.ipisubnedu.com usqjqymubh
tjedcbxrgjrpmbwfuqah, http://www.ipisubnedu.com usqjqymubh
tjedcbxrgjrpmbwfuqah, http://www.ipisubnedu.com usqjqymubh
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-13 [Haskell] 木のトラバース
data BNTree a = L a
| B a (BNTree a) (BNTree a)
という木構造を考える.
sample = B 1 (B 2 (L 4) (L 5)) (L 3)
は,
1
/ \
2 3
/ \
4 5
という木をあらわす.これを指定順序でたどってリストにするには,
data TravOrder = Pre | In | Post traverse :: TravOrder -> BNTree a -> [a] traverse _ (L x) = [x] traverse Pre (B x l r) = [x] ++ traverse Pre l ++ traverse Pre r traverse In (B x l r) = traverse In l ++ [x] ++ traverse In r traverse Post (B x l r) = traverse Post l ++ traverse Post r ++ [x]
実行例
*Main> traverse Pre sample [1,2,4,5,3] *Main> traverse In sample [4,2,5,1,3] *Main> traverse Post sample [4,5,2,3,1]
--nobsun
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-10 [MacOS] MacOS X WorkShopでOpenOffice.org 2.0.2rc4日本語版のための環境を構築する
MacOS環境でのOpenOffice.org 2実行にはX11が必要である。MacOS XのインストールディスクからX11User.dmgをインストールしておく。
Intel版、PowerPC版のOpenOffice.org 2.0.2rc4の日本語化ビルドは以下で公開されている。
ftp://ooopackages.good-day.net/pub/OpenOffice.org/MacOSX/2.0.2rc4
上記から、自分の環境に合った日本語化ビルドをダウンロードする。
| Intel環境 | OOo_2.0.2rc4_MacOSXIntel_ja.dmg |
| PowerPC環境 | OOo_2.0.2rc4_MacOSXPPC_ja.dmg |
インストールは「アプリケーション」フォルダにドラッグ&ドロップするだけで完了するが、起動する前に行うべき作業がある。
上記には日本語フォントは含まれていないので、MacOS X WorkShopで配布されている「さざなみフォント」をインストールしておく。
sudo apt-get install ttfonts-ja
MacOS X WorkShopには「ことえり」に対応したkinput2が含まれているので、OpenOffce.org 2でも問題なく日本語入力ができる。
--yasuyuki
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-09 [MacOS] MacOS X WorkShopでCarbon Emacsを導入する
MacOS Xで使えるパッケージ管理システムはFink、epkg、Darwin Portsなどがあるが、MacOS X WorkShopはVine Linuxの日本語環境と同様な環境を構築するために作られたパッケージ管理システム。PowerPCとIntel両方の環境に対応している。
例えばCarbon Emacsを導入するには、 MacOS X WorkShopサイト から最新版(これを書いている時点ではMacOSX-WS-10.4.2.dmをダウロードしてインストールし、以下を実行すれば良い。
sudo apt-get update sudo apt-get install OSX-base sudo apt-get install task-emacs
これで、Intel Macの場合はIntel版のCarbon Emacsが導入される。
--yasuyuki
pkgsrcも仲間に入れてやってください。
不勉強で知りませんでした。ググってみました。 http://www.ki.nu/software/macosx/pkgsrc.html 私はFink->epkg->MacOS X WorkShopと使ってきましたが、 gdbmなどは結局ソースからビルドして/usr/local配下に入れています。
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-08 [Gauche] 同じタグをもつ要素をまとめたい
k16's note より,
この話題はHanataniさんの Diary にもとりあげられていて,そこに Shiro さんがコメントしている.
よく使うパターンで日々のURI毎のアクセス数を集計を月単位で 集計するなんてときに使う.じっさい使ってたりする...
儂がやったのは,入力は (<string> <count>) というレコードの A-リストだという仮定だけど
(define (counting alist)
(let1 ht (make-hash-table 'string=?)
(for-each (lambda (a) (hash-table-push! ht (car a) (cadr a))) alist)
(hash-table-map ht (lambda (k v) (list k (apply + v))))))
すこし抽象化して
(define (gather type proc alist)
(let1 ht (make-hash-table type)
(for-each (lambda (a) (hash-table-push! ht (car a) (cadr a))) alist)
(hash-table-map ht (lambda (k v) (list k (apply proc v))))))
結果はソートして使うなりなんなりと...
--nobsun
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-07 [Haskell] 三桁毎にスペースを挿入する正規表現
- 三桁毎にスペースを挿入する正規表現
1234567890.12345 みたいな浮動小数点数の文字列表記があったとして、これ を 1 234 567 890.12345 みたいに整数部だけ三桁毎にスペースを挿入するに はどうしたらよいのでしょうか。
- 三桁毎にスペースを挿入する正規表現の続き
ちなみに、正規表現でしこたま頭を悩ませた後で申し訳ないのですが、Python だと適当に書いた方が五倍は速いです。
Haskellだと正規表現を使わずに書いた方が100倍は「早い」です.
そりゃおめえが正規表現しらんからやろっ!>儂
threes s
= case break ('.'==) s of
(xs,ys) -> (reverse $ concat $ intersperse " " $ every 3 $ reverse xs) ++ ys
where every n = takeWhile (not . null) . map (take n) . iterate (drop n)
実行例
*Main> threes "1234567890" "1 234 567 890" *Main> threes "1234567890.1234" "1 234 567 890.1234" *Main> threes "0.1234" "0.1234"
--nobsun
某所で「他のマシンでキーボード+モニタとして使えるノートパソコンが欲しい」という話をして たのですが、まさにこれですね(モニタはムリか)。
ちょびっと短縮 every n = takeWhile (not . null) . unfoldr (Just . splitAt n)
threes s = case break ('.'==) s of
(xs,ys) -> (dropWhile isSpace $ reverse $ concat $ zipWith (:) (reverse xs) (cycle ["",""," "])) ++ ys
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-06 [Gadget] おおっ! HHK Note
ほえーーーっ.
--nobsun
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-03 [FYI] REST入門
RESTは随分前から耳にはしていたのだけれど, 「URIの組み立て方の一種」というトンデモな認識しかなかった.^^;
REpresentational State Transfer の略ということも知らなかった.orz
というわけで,お勉強のためのページ.
- Roy Fielding さんの論文.これが原典. Architectural Styles and the Design of Network-based Software Architectures
- YAMAMONOT Yohei さんの REST入門
- Paul Prescod さんのCommon REST Mistakes
RESTはステートレスなので,Cookieを使ってセッション管理をするのはREST的 じゃないとのこと.じゃあどうするの?
ううむ.
--nobsun
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
tjedcbxrgjrpmbwfuqah, http://www.ipisubnedu.com usqjqymubh
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-02 [Book] Rails の本
今や Ruby界にとどまらず,世界中のアプリケーション界を席捲している感の ある Ruby on Rails. とうとう
Agile Web Development With Rails: A Pragmatic Guide (The Facets of Ruby Series) の翻訳
RailsによるアジャイルWebアプリケーション開発 が出た.
著者がRailsを推奨する理由,トップ10
- Webアプリケーションをアジャイルに開発できる
- Webページにさまさまな効果を持たせて括弧よく仕上げることができる
- フレームワークの世話から解放され,アプリケーション開発に専念できる
- アプリケーションが大きくなっても保守性が維持される
- 顧客の要望に「はい」と答えられることが多くなる
- テストを組み込み機能で簡単に行える
- 結果がすぐに分かる.コードを編集したら,更新ボタンを押すだけで,変更 内容がブラウザに反映される
- メタプログラミングにより,より高い(人間に近い)レベルでプログラミング できる.
- コードジェネレータがお膳立てしてくれる
- XML不要!
なんか,「ふつう」に見えるなぁ(ぉっ). さて Kahua は上を行けるか!?
--nobsun
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel
2006-03-01 [GCC] 値としてのラベル
これも ふつうのLinuxプログラミング読書会 で出た話題.
GCCには 値としてのラベル という拡張がはいっている.これが関数として呼び出せてしまうという話.
#include <stdio.h>
int main()
{
void* lab_ptr;
void (*fun_ptr)();
int i = 0;
lab_ptr = &&label;
fun_ptr = (void (*)())lab_ptr;
label:
if (i < 5) {
printf("Hello, world!\n");
i++;
fun_ptr();
}
return 0;
}
実行結果は
$ gcc foo.c $ ./a.out Hello, world! Hello, world! Hello, world! Hello, world! Hello, world!
うへぇーーー
--nobsun
cwxaqhohnehxqxfsjdhi, http://www.jzhrqzbywu.com aaqmzyetrt
toyicakmluuwaaxedzlm, http://www.jmthkmuutl.com dshvvyaaiu
tjedcbxrgjrpmbwfuqah, http://www.ipisubnedu.com usqjqymubh
wlxptptt, http://www.mnadmpxrsn.com kylldkycoj
kovjdptt, http://www.warmmsgiwo.com atesvijnsa
bduxeptt, http://www.aqzkyugcos.com bkjosbcgor
lhgkgptt, http://www.qeatetvytn.com zxgyiwscaz
jwiddptt, http://www.zahspikrbb.com pbvrowifdz
nvmngptt, http://www.hrzuoasogh.com rxatslrewk
gfxeeptt, http://www.nsinsewohz.com pdjyarijfm
lzetpptt, http://www.bxajnaaehd.com irewirwpcb
rdusbptt, http://www.tyncezbkxg.com suxgyozapy
jmxmuptt, http://www.nqxwnqtldy.com yoorhfepyc
hrhuqptt, http://www.rdvnezqoyh.com fwprukpqwy
eguskptt, http://www.ckrmsbgkcq.com cwalhimhxu
eunwoptt, http://www.kzvfnlqqnr.com pxwpjtfkxk
ienbcptt, http://www.wvwbmrzawq.com hhggmwucpn
abjqmptt, http://www.qzdjcvfpnb.com fzrnicsaho
wlvpoptt, http://www.jcwhkdvjut.com vpxgzkjjel