| BOGOFILTER(1) | Bogofilter Reference Manual | BOGOFILTER(1) |
نام (NAME)
bogofilter - فیلتر سریع و آماری بیزی برای تشخیص هرزنامهها و اسپم ایمیل
خلاصه دستور (SYNOPSIS)
bogofilter [help options | classification options | registration options | parameter options | info options] [general options] [config file options]
که در آن
گزینههای راهنما (help options) عبارتند از:
[-h] [--help] [-V] [-Q]
گزینههای طبقهبندی (classification options) عبارتند از:
[-p] [-e] [-t] [-T] [-u] [-H] [-M] [-b] [-B object ...] [-R] [general options] [parameter options] [config file options]
گزینههای ثبت (registration options) عبارتند از:
[-s | -n] [-S | -N] [general options]
گزینههای عمومی (general options) عبارتند از:
[-c filename] [-C] [-d dir] [-k cachesize] [-l] [-L tag] [-I filename] [-O filename]
گزینههای پارامتر (parameter options) عبارتند از:
[-E value[,value]] [-m value[,value][,value]] [-o value[,value]]
گزینههای اطلاعاتی (info options) عبارتند از:
[-v] [-y date] [-D] [-x flags]
گزینههای فایل پیکربندی (config file options) عبارتند از:
[--option=value]
نکته: از دستور bogofilter --help برای نمایش فهرست کامل گزینهها استفاده کنید.
توضیحات (DESCRIPTION)
برنامه Bogofilter یک فیلتر بیزی برای تشخیص هرزنامه (اسپم) است. در حالت عادی کارکرد، این برنامه یک پیام ایمیل یا متنی دیگر را از ورودی استاندارد دریافت میکند، یک بررسی آماری در برابر فهرستهای کلمات «خوب» (سالم) و «بد» (اسپم) انجام میدهد، و یک کد وضعیت بازمیگرداند که نشان میدهد آیا پیام هرزنامه است یا خیر. Bogofilter با یک الگوریتم سریع طراحی شده است، از Berkeley DB برای راهاندازی و جستجوی سریع بهره میبرد، مستقیماً به زبان C کدنویسی شده و برای سرعت بالا بهینهسازی شده است، به طوری که میتواند در محیطهای عملیاتی توسط سرورها و سایتهایی که حجم بالایی از ایمیل را پردازش میکنند استفاده شود.
نحوه کار تئوری (THEORY OF OPERATION)
برنامه Bogofilter با ورودی خود مانند یک کیسه از توکنها (کلمات و نشانهها) رفتار میکند. هر توکن در برابر یک فهرست کلمات (wordlist) بررسی میشود؛ این فهرست تعداد دفعاتی را که آن توکن در ایمیلهای غیرهرزنامه (ham) و هرزنامه (spam) رخ داده است نگهداری میکند. از این ارقام برای محاسبه تخمینی از احتمال اینکه پیامی حاوی آن توکن هرزنامه باشد، استفاده میشود. این مقادیر با یکدیگر ترکیب میشوند تا مشخص شود که پیام هرزنامه (spam) است یا پیام سالم (ham).
اگرچه این روش در مقایسه با روشهای رایجتر مبتنی بر تطبیق الگو (pattern-matching) ساده به نظر میرسد، اما مشخص شده که بسیار مؤثر و کارآمد است. مقاله پاول گراهام (Paul Graham) با عنوان A Plan For Spam[1] برای مطالعه پیشنهاد میشود.
این برنامه با انجام تحلیل واژگانی هوشمندانهتر، پیشنهاد پاول را بهطور چشمگیری بهبود میبخشد. Bogofilter رمزگشایی مناسب MIME و تجزیه منطقی کدهای HTML را انجام میدهد. انواع خاصی از توکنها مانند نامهای میزبان (hostnames) و آدرسهای IP به جای تجزیه شدن، به عنوان ویژگیهای شناسایی حفظ میشوند. انواع مختلف اطلاعات زائد MTA نظیر تاریخها و شناسههای پیام (message-IDs) نادیده گرفته میشوند تا حجم فهرست کلمات بیدلیل افزایش نیابد. توکنهای یافتشده در فیلدهای مختلف سربرگ (header) نیز بهدرستی نشانهگذاری میشوند.
بهبود دیگر این است که این برنامه اصلاحات پیشنهادی گری رابینسون (Gary Robinson) در محاسبات را ارائه میدهد (پارامترهای robx و robs را در ادامه ببینید). این تغییرات در مقاله رابینسون با عنوان Spam Detection[2] شرح داده شدهاند.
از آن زمان، رابینسون (مقاله او در Linux Journal با عنوان A Statistical Approach to the Spam Problem[3] را ببینید) و دیگران متوجه شدند که محاسبات را میتوان با استفاده از روش فیشر (Fisher's method) بیشتر بهینهسازی کرد. بهبود دیگری[4] با اعمال فاکتورهای اندازه مؤثر (ESF - effective size factors) جداگانه در محاسبات احتمال هرزنامه و غیرهرزنامه، افزونگی توکنها را جبران میکند.
بهطور خلاصه، نحوه کار به این صورت است: تخمینهای مربوط به احتمال هرزنامه بودن توکنهای منفرد با استفاده از «تابع معکوس کایاسکوئر» (inverse chi-square function) ترکیب میشوند. مقدار آن نشان میدهد که فرض صفر (null hypothesis) مبنی بر اینکه پیام صرفاً مجموعهای تصادفی از کلمات مستقل با احتمالات داده شده توسط تخمینهای پیشین ماست، تا چه حد نقض میشود. این تابع نسبت به احتمالات کوچک (کلمات سالم / hammish) بسیار حساس است، اما به احتمالات بالا (کلمات هرزنامه / spammish) حساس نیست؛ بنابراین مقدار آن فقط نشاندهنده نشانههای قوی سالم بودن در یک پیام است. اکنون با استفاده از احتمالات معکوس برای توکنها، همان محاسبه دوباره انجام میشود که شاخصی از نشانههای قوی هرزنامه بودن پیام به دست میدهد. در نهایت، این دو شاخص از یکدیگر کسر میشوند (و در بازه ۰ تا ۱ مقیاسبندی میگردند). این شاخص ترکیبی (bogosity) اگر نشانههای پیام سالم قویتر از پیام هرزنامه باشد به ۰ نزدیک است و اگر وضعیت برعکس باشد به ۱ نزدیک است. اگر نشانهها برای هر دو به یک اندازه قوی باشند، مقدار نزدیک به ۰.۵ خواهد بود. از آنجا که این پیامها نشانه مشخصی ارائه نمیدهند، یک حالت سهوضعیتی (tristate) در bogofilter وجود دارد تا این پیامها را به عنوان نامطمئن (unsure) علامتگذاری کند، در حالی که پیامهای واضح به ترتیب به عنوان هرزنامه (spam) یا سالم (ham) مشخص میشوند. در حالت دووضعیتی (two-state)، هر پیام یا به عنوان هرزنامه و یا به عنوان سالم علامتگذاری میشود.
پارامترهای متعددی بر این محاسبات تأثیر میگذارند که مهمترین آنها عبارتند از:
robx: امتیازی که به توکنی که قبلاً دیده نشده اختصاص داده میشود. robx احتمال هرزنامه بودن آن توکن است.
robs: وزنی روی robx که احتمال یک توکن کمتر دیدهشده را به سمت robx سوق میدهد.
min-dev: حداقل فاصله از ۰.۵ برای توکنها تا در محاسبه استفاده شوند. فقط توکنهایی که فاصلهشان از ۰.۵ بیشتر از این مقدار باشد استفاده میشوند.
spam-cutoff: پیامهایی با امتیاز بزرگتر یا مساوی این مقدار به عنوان هرزنامه (spam) علامتگذاری میشوند.
ham-cutoff: اگر صفر یا برابر با spam-cutoff باشد، تمام پیامهایی با مقادیر اکیداً کمتر از spam-cutoff به عنوان سالم (ham) و بقیه به عنوان هرزنامه (دووضعیتی) علامتگذاری میشوند. در غیر این صورت مقادیر کمتر یا مساوی ham-cutoff به عنوان سالم علامتگذاری میشوند، پیامهایی با مقادیر اکیداً بین ham-cutoff و spam-cutoff به عنوان نامطمئن (unsure) و مابقی به عنوان هرزنامه (سهوضعیتی) علامتگذاری میشوند.
sp-esf: فاکتور اندازه مؤثر (ESF) برای هرزنامه (spam).
ns-esf: فاکتور اندازه مؤثر (ESF) برای غیرهرزنامه (nonspam). مقدار پیشفرض این مقادیر ESF برابر با ۱.۰ است که معادل عدم استفاده از ESF در محاسبات است. مقادیر مناسب برای جامعه ایمیل کاربر را میتوان با کمک برنامه bogotune تعیین کرد.
گزینهها (OPTIONS)
گزینههای راهنما (HELP OPTIONS)
گزینه -h پیام راهنما را چاپ کرده و خارج میشود.
گزینه -V شماره نسخه را چاپ کرده و خارج میشود.
گزینه -Q (پرسوجو / query) پیکربندی bogofilter، شامل پارامترهای ثبت، گزینههای تجزیه، دایرکتوری bogofilter و غیره را چاپ میکند.
گزینههای طبقهبندی (CLASSIFICATION OPTIONS)
گزینه -p (عبور مستقیم / passthrough) پیام را همراه با یک خط X-Bogosity در انتهای سربرگ پیام خروجی میدهد. این کار مستلزم نگهداری کل پیام در حافظه هنگام خواندن از ورودی استاندارد stdin (یا از یک لوله یا سوکت) است. اگر پیام از فایلی خوانده شود که امکان بازگشت به ابتدا (rewind) را دارد، bogofilter آن را برای بار دوم میخواند.
گزینه -e (جاسازی / embed) به bogofilter میگوید در صورتی که پیام قابل طبقهبندی باشد (یعنی خطایی رخ ندهد) با کد خروج ۰ خارج شود. در حالت عادی bogofilter از کدهای متفاوتی برای طبقهبندیهای هرزنامه (spam)، سالم (ham) و نامطمئن (unsure) استفاده میکند، اما این گزینه استفاده از bogofilter را به همراه procmail یا maildrop سادهتر میسازد.
گزینه -t (مختصر / terse) به bogofilter دستور میدهد تا یک پیام خلاصه هرزنامگی شامل ۱ حرف و امتیاز را چاپ کند. هرزنامه با «Y»، سالم با «N» و نامطمئن با «U» نشان داده میشود. نکته: فرمتبندی را میتوان با استفاده از فایل پیکربندی سفارشی کرد.
گزینه -T یک حالت مختصر تغییرناپذیر برای استفاده در اسکریپتها فراهم میکند. bogofilter یک پیام خلاصه هرزنامگی شامل ۱ حرف و امتیاز را چاپ خواهد کرد. هرزنامه با «S»، سالم با «H» و نامطمئن با «U» مشخص میشود.
گزینه -TT یک حالت مختصر ثابت برای استفاده در اسکریپتها فراهم میآورد. Bogofilter تنها امتیاز را با ۱۶ رقم بااهمیت نمایش میدهد.
گزینه -u به bogofilter دستور میدهد تا متن پیام را پس از طبقهبندی به عنوان هرزنامه یا غیرهرزنامه، ثبت کند. یک پیام هرزنامه در فهرست هرزنامهها (spamlist) و یک پیام غیرهرزنامه در فهرست پیامهای خوب (goodlist) ثبت خواهد شد. اگر نتیجه طبقهبندی «نامطمئن» (unsure) باشد، پیام ثبت نخواهد شد. در واقع این گزینه bogofilter را با پرچم -s یا -n (بر حسب مورد) اجرا میکند. در استفاده از این قابلیت احتیاط توصیه میشود، زیرا هرگونه خطای طبقهبندی که bogofilter مرتکب شود حفظ شده و انباشته خواهد شد تا زمانی که بهصورت دستی با ترکیب گزینههای -Sn و -Ns اصلاح گردد. توجه داشته باشید که این گزینه باعث میشود پایگاهداده برای دسترسی نوشتن باز شود، که میتواند به دلیل تداخل قفلها و عملیات همگام I/O منجر به افت شدید سرعت شود.
گزینه -H به bogofilter دستور میدهد که توکنهای موجود در سربرگ را برچسبگذاری نکند. این گزینه برای آزمایش است و نباید در عملکرد عادی از آن استفاده کنید.
گزینه -M به bogofilter دستور میدهد تا ورودی خود را به عنوان یک فایل با فرمت mbox پردازش کند. اگر گزینه -v یا -t نیز داده شده باشد، یک خط وضعیت هرزنامگی برای هر پیام چاپ خواهد شد.
گزینه -b (حالت دستهای جریانی / streaming bulk mode) به bogofilter میگوید چندین شیء را که نام آنها از stdin خوانده میشود طبقهبندی کند. اگر گزینه -v یا -t نیز مشخص شده باشد، bogofilter یک خط حاوی نام فایل و اطلاعات طبقهبندی را برای هر فایل چاپ خواهد کرد. این یک جایگزین برای گزینه -B است که اشیاء را در خط فرمان فهرست میکند.
یک شیء در این زمینه میتواند یک maildir (تشخیص خودکار)، یا اگر maildir نباشد، یک پیام منفرد باشد مگر اینکه گزینه -M داده شده باشد - که در این صورت به عنوان mbox پردازش میشود. (سربرگ Content-Length: در حال حاضر در نظر گرفته نمیشود.)
هنگام خواندن فرمت mbox، برنامه bogofilter به خط خالی پس از هر ایمیل اتکا میکند. در صورت نیاز، دستور formail -es اطمینان حاصل میکند که این مورد رعایت شده است.
گزینه -B object ... (حالت دستهای / bulk mode) به bogofilter دستور میدهد چندین شیء مشخصشده در خط فرمان را طبقهبندی کند. این اشیاء میتوانند نام فایلها (برای پیامهای منفرد)، صندوقهای پستی (فایلهای حاوی چندین پیام) یا دایرکتوریها (با فرمت maildir و MH) باشند. اگر گزینه -v یا -t نیز مشخص شده باشد، bogofilter یک خط حاوی نام فایل و اطلاعات طبقهبندی برای هر فایل چاپ خواهد کرد. این یک جایگزین برای گزینه -b است که اشیاء را از ورودی استاندارد stdin میخواند.
گزینه -R به bogofilter دستور میدهد تا یک دیتا فریم R (R data frame) را به صورت متنی در خروجی استاندارد تولید کند. برای جزئیات بیشتر، بخش یکپارچهسازی با R را در ادامه ببینید.
گزینههای ثبت (REGISTRATION OPTIONS)
گزینه -s به bogofilter میگوید متن ارائهشده را به عنوان هرزنامه (spam) ثبت کند. در صورت عدم وجود پایگاهداده، ایجاد خواهد شد.
گزینه -n به bogofilter میگوید متن ارائهشده را به عنوان غیرهرزنامه (non-spam) ثبت کند.
برنامه Bogofilter ثبت دوباره یک پیام را تشخیص نمیدهد. اگر این کار را تصادفی انجام دهید، شمارش توکنها ۱ واحد با آنچه واقعاً میخواهید اختلاف خواهد داشت و امتیازهای هرزنامگی متناظر کمی تغییر خواهند کرد. با توجه به تعداد زیاد توکنها و پیامها در فهرست کلمات، این موضوع اهمیت چندانی ندارد. این مشکل میتواند با استفاده از گزینه -S یا گزینه -N اصلاح شود.
گزینه -S به bogofilter دستور میدهد ثبت قبلی همان پیام به عنوان هرزنامه را لغو (undo) کند. اگر پیامی به اشتباه با گزینه -s یا -u به عنوان هرزنامه ثبت شده باشد و بخواهید آن را حذف کرده و به عنوان غیرهرزنامه ثبت کنید، از -Sn استفاده کنید. اگر -S برای پیامی استفاده شود که به عنوان هرزنامه ثبت نشده بوده است، شمارندهها همچنان یک واحد کاهش مییابند.
گزینه -N به bogofilter دستور میدهد ثبت قبلی همان پیام به عنوان غیرهرزنامه را لغو کند. اگر پیامی به اشتباه با گزینه -n یا -u به عنوان غیرهرزنامه ثبت شده باشد و بخواهید آن را حذف کرده و به عنوان هرزنامه ثبت نمایید، از -Ns استفاده کنید. اگر -N برای پیامی استفاده شود که به عنوان غیرهرزنامه ثبت نشده بوده است، شمارندهها همچنان کاهش خواهند یافت.
گزینههای عمومی (GENERAL OPTIONS)
گزینه -c filename به bogofilter میگوید فایل پیکربندی نامبرده را بخواند.
گزینه -C از خواندن فایلهای پیکربندی توسط bogofilter جلوگیری میکند.
گزینه -d dir به شما امکان میدهد دایرکتوری پایگاهداده را تنظیم کنید. برای سایر گزینههای تنظیم دایرکتوری، بخش محیط (ENVIRONMENT) را ببینید.
گزینه -k cachesize اندازه حافظه نهان (کَش) زیرسیستم BerkeleyDB را بر حسب واحد ۱ مبیبایت (۱٬۰۴۸٬۵۷۶ بایت) تنظیم میکند. اندازه مناسب کش عملکرد bogofilter را بهبود میبخشد. اندازه توصیهشده یکسوم اندازه فایل پایگاهداده است. میتوانید اسکریپت bogotune (در پوشه tuning) را برای تعیین اندازه توصیهشده اجرا کنید.
گزینه -l در هر بار اجرای bogofilter یک خط اطلاعاتی در لاگ سیستم (system log) مینویسد. اطلاعات ثبتشده به نحوه اجرای bogofilter بستگی دارد.
گزینه -L tag برچسبی را پیکربندی میکند که میتواند در اطلاعات ثبتشده توسط گزینه -l گنجانده شود، اما در حال حاضر نیازمند یک فرمت سفارشی حاوی رشته %l است. این گزینه مستلزم فعال بودن -l است.
گزینه -I filename به bogofilter دستور میدهد تا ورودی خود را به جای stdin از فایل مشخصشده بخواند.
گزینه -O filename به bogofilter میگوید در حالت عبور مستقیم (passthrough) خروجی خود را در کجا بنویسد. توجه داشته باشید که این گزینه فقط زمانی کار میکند که -p بهطور صریح مشخص شده باشد.
گزینههای پارامتر (PARAMETER OPTIONS)
گزینه -E value[,value] امکان تنظیم مقدار sp-esf و مقدار ns-esf را فراهم میکند. با دو مقدار، هم sp-esf و هم ns-esf تنظیم میشوند. اگر فقط یک مقدار داده شود، پارامترها طبق توضیحات یادداشت زیر تنظیم میشوند.
گزینه -m value[,value][,value] امکان تنظیم مقدار min-dev و در صورت تمایل، مقادیر robs و robx را فراهم میکند. با سه مقدار، min-dev، robs و robx همگی تنظیم میشوند. اگر مقادیر کمتری داده شود، پارامترها طبق توضیحات یادداشت زیر تنظیم میشوند.
گزینه -o value[,value] امکان تنظیم مقادیر spam-cutoff و ham-cutoff را فراهم میکند. با دو مقدار، هم spam-cutoff و هم ham-cutoff تنظیم میشوند. اگر فقط یک مقدار داده شود، پارامترها طبق توضیحات یادداشت زیر تنظیم میشوند.
نکته: تمامی این گزینهها اجازه میدهند که مقادیر کمتری ارائه شود. مقادیر را میتوان با استفاده از علامت کاما خالی گذاشت که در این صورت پارامتر(های) متناظر تغییر نخواهند کرد. اگر فقط مقدار اول ارائه شود، تنها پارامتر اول تنظیم میشود. مقادیر انتهایی را میتوان نادیده گرفت که در این صورت پارامترهای متناظر تغییر نخواهند کرد. در فهرست پارامترها، فاصله بعد از کاما مجاز نیست.
گزینههای اطلاعاتی (INFO OPTIONS)
گزینه -v گزارشی از تحلیل bogofilter روی ورودی در خروجی استاندارد تولید میکند. هر v اضافی میزان جزئیات خروجی را تا حداکثر ۴ افزایش میدهد. با -vv، گزارش توکنهایی را که بیشترین انحراف از میانگین وابستگی ۰.۵ به هرزنامه را دارند فهرست میکند.
گزینه -y date میتواند برای لغو تاریخ جاری هنگام برچسبگذاری زمانی توکنها استفاده شود. مقدار صفر (0) برچسب زمانی را غیرفعال میکند.
گزینه -D خروجی اشکالزدایی (debug) را به خروجی استاندارد هدایت میکند.
گزینه -x flags امکان تنظیم فلگهای اشکالزدایی را برای چاپ اطلاعات دیباگ فراهم میسازد. برای فهرست فلگهای قابل استفاده، فایل سربرگ debug.h را ببینید.
گزینههای فایل پیکربندی (CONFIG FILE OPTIONS)
با استفاده از نحو longopt گنو --، عبارت name=value در فایل پیکربندی تبدیل به --option=value در خط فرمان میشود. برای مشاهده فهرست گزینهها از دستور bogofilter --help استفاده کنید و برای اطلاعات بیشتر درباره آنها فایل bogofilter.cf.example را ببینید. برای مثال برای تغییر هدر X-Bogosity به "X-Spam-Header"، از دستور زیر استفاده کنید:
--spam-header-name=X-Spam-Header
محیط (ENVIRONMENT)
برنامه Bogofilter از یک دایرکتوری پایگاهداده استفاده میکند که میتوان آن را در فایل پیکربندی تنظیم کرد. اگر در آنجا تنظیم نشده باشد، bogofilter از مقدار متغیر محیطی BOGOFILTER_DIR استفاده خواهد کرد. هر دو مورد را میتوان با گزینه -d dir بازنویسی (override) کرد. اگر هیچیک از این موارد در دسترس نباشد، bogofilter از دایرکتوری $HOME/.bogofilter استفاده میکند.
پیکربندی (CONFIGURATION)
خط فرمان bogofilter امکان تنظیم گزینههای متعددی را فراهم میکند که نحوه عملکرد bogofilter را تعیین میکنند. از فایل /etc/bogofilter/bogofilter.cf میتوان برای تنظیم پارامترهای اضافی که بر عملکرد آن تأثیر میگذارند استفاده کرد. فایل /etc/bogofilter/bogofilter.cf.example حاوی نمونههایی از تمام پارامترها است. پیامهای وضعیت و ثبت لاگ را میتوان برای هر سرور و محیط به صورت سفارشی تنظیم کرد.
وضعیت خروج (EXIT STATUS)
مقدار ۰ برای هرزنامه (spam)؛ ۱ برای غیرهرزنامه (non-spam)؛ ۲ برای نامطمئن (unsure)؛ ۳ برای خطاهای ورودی/خروجی (I/O) یا سایر خطاها.
اگر هر دو گزینه -p و -e استفاده شوند، مقادیر بازگشتی عبارتند از: ۰ برای هرزنامه یا غیرهرزنامه؛ ۳ برای خطاهای ورودی/خروجی یا سایر خطاها.
خطای ۳ معمولاً به این معنی است که فایل فهرست کلماتی که bogofilter میخواهد در زمان راهاندازی بخواند وجود ندارد یا دیسک سخت در حالت -p پر شده است.
یکپارچهسازی با سایر ابزارها (INTEGRATION WITH OTHER TOOLS)
استفاده به همراه procmail
دستورالعمل (recipe) زیر (الف) هر پیامی را که bogofilter به عنوان هرزنامه ارزیابی کند در صندوق هرزنامه قرار میدهد، (ب) کلمات موجود در پیامهای ارزیابیشده به عنوان هرزنامه را به عنوان هرزنامه ثبت میکند، و (ج) کلمات موجود در پیامهای ارزیابیشده به عنوان غیرهرزنامه را به عنوان غیرهرزنامه ثبت میکند. با استقرار این دستورالعمل، معمولاً تنها زمانی نیاز به دخالت کاربر (با گزینههای -Ns یا -Sn) خواهد بود که bogofilter پیامی را به اشتباه دستهبندی کرده باشد.
# فیلتر کردن ایمیل از طریق bogofilter، برچسبگذاری به عنوان Ham، Spam یا Unsure
# و بهروزرسانی فهرست کلمات (wordlist)
:0fw
| bogofilter -u -e -p
# اگر اجرای bogofilter ناموفق بود، ایمیل به صف بازگردانده میشود؛
# سرور MTA بعداً ارسال مجدد آن را امتحان خواهد کرد
# مقدار ۷۵ همان مقدار EX_TEMPFAIL در /usr/include/sysexits.h است
:0e
{ EXITCODE=75 HOST }
# انتقال ایمیل به spam-bogofilter در صورتی که هرزنامه باشد
:0:
* ^X-Bogosity: Spam, tests=bogofilter
spam-bogofilter
# انتقال ایمیل به unsure-bogofilter
# در صورتی که نه هرزنامه و نه سالم تشخیص داده شود
:0:
* ^X-Bogosity: Unsure, tests=bogofilter
unsure-bogofilter
# با این دستورالعمل میتوانید آموزش bogofilter را با یک فهرست کلمات
# خالی آغاز کنید. حتماً پوشه unsure خود را مرتباً بررسی کنید،
# پیامها را از آن خارج کرده، به عنوان ham (یا spam) دستهبندی نموده
# و از آنها برای آموزش bogofilter استفاده کنید.
قاعده procmail زیر ایمیل را از ورودی استاندارد stdin دریافت کرده و در صورت تشخیص هرزنامه بودن توسط bogofilter، آن را در فایل spam ذخیره میکند:
:0HB: * ? bogofilter spam
و این قاعده مشابه نیز توکنهای موجود در ایمیل را مطابق با طبقهبندی bogofilter ثبت میکند:
:0HB: * ? bogofilter -u spam
اگر bogofilter با شکست مواجه شود (بازگرداندن مقدار ۳)، با پیام به عنوان غیرهرزنامه رفتار خواهد شد.
این پیکربندی برای maildrop است؛ این دستور به طور خودکار تحویل ایمیل را به تعویق انداخته و زمانی که دستور xfilter با شکست مواجه شود دوباره تلاش میکند؛ از این مورد در فایل ~/.mailfilter خود استفاده کنید:
xfilter "bogofilter -u -e -p"
if (/^X-Bogosity: Spam, tests=bogofilter/)
{
to "spam-bogofilter"
}
خطوط زیر در فایل .muttrc ماکروهای mutt را برای ارسال ایمیل به bogofilter ایجاد میکنند.
macro index d "<enter-command>unset wait_key\n\ <pipe-entry>bogofilter -n\n\ <enter-command>set wait_key\n\ <delete-message>" "delete message as non-spam" macro index \ed "<enter-command>unset wait_key\n\ <pipe-entry>bogofilter -s\n\ <enter-command>set wait_key\n\ <delete-message>" "delete message as spam"
یکپارچهسازی با عامل انتقال پیام (MTA)
استفاده از R برای تأیید محاسبات bogofilter
گزینه -R به bogofilter دستور میدهد تا یک دیتا فریم R تولید کند. این دیتا فریم برای هر توکن تحلیلشده شامل یک ردیف است. هر ردیف شامل توکن، مجموع شمارشهای «خوب» و «اسپم» آن در پایگاهداده، شمارش «خوب» تقسیم بر تعداد پیامهای غیرهرزنامه استفادهشده برای ایجاد پایگاهداده آموزشی، شمارش «اسپم» تقسیم بر تعداد پیامهای هرزنامه، مقدار f(w) رابینسون برای آن توکن، لگاریتمهای طبیعی (1 - f(w)) و f(w)، و یک نویسه نشانگر (+ اگر مقدار f(w) توکن از حداقل انحراف از ۰.۵ فراتر رفته باشد، و - اگر فراتر نرفته باشد) است. یک ردیف اضافی در انتهای جدول وجود دارد که شامل یک برچسب در فیلد توکن، و به دنبال آن تعداد کلمات واقعاً استفادهشده (آنهایی که نشانگر + دارند)، مقادیر P، Q، S، s و x رابینسون و مقدار حداقل انحراف است.
دیتا فریم R را میتوان در یک فایل ذخیره کرد و بعداً در یک نشست R بارگذاری نمود (برای اطلاعات درباره بسته محاسباتی و ریاضی R، وبسایت پروژه R[5] را ببینید). همراه با توزیع bogofilter، یک اسکریپت ساده R (فایل bogo.R) ارائه شده است که میتواند برای تأیید محاسبات bogofilter استفاده شود. دستورالعملهای استفاده از آن در قالب کامنت درون اسکریپت گنجانده شده است.
پیامهای لاگ (LOG MESSAGES)
برنامه Bogofilter هنگام استفاده از گزینه -l پیامهایی را در لاگ سیستم مینویسد. آنچه نوشته میشود به این بستگی دارد که از کدام پرچمهای دیگر استفاده شده است.
یک اجرای طبقهبندی پیامهای زیر را تولید خواهد کرد (در اینجا بخش تاریخ و میزبان نشان داده نشده است):
bogofilter[1412]: X-Bogosity: Ham, spamicity=0.000227 bogofilter[1415]: X-Bogosity: Spam, spamicity=0.998918
استفاده از -u برای طبقهبندی یک پیام و بهروزرسانی فهرست کلمات، خروجی زیر را تولید میکند (در یک خط):
bogofilter[1426]: X-Bogosity: Spam, spamicity=0.998918, register -s, 329 words, 1 messages
ثبت کلمات (-l و -s، -n، -S یا -N) خروجی زیر را ایجاد خواهد کرد:
bogofilter[1440]: register-n, 255 words, 1 messages
یک اجرای ثبت (با استفاده از -s، -n، -N یا -S) پیامهایی مانند زیر را تولید خواهد کرد:
bogofilter[17330]: register-n, 574 words, 3 messages bogofilter[6244]: register-s, 1273 words, 4 messages
فایلها (FILES)
/etc/bogofilter/bogofilter.cf
~/.bogofilter.cf
~/.bogofilter/wordlist.db
نویسندگان (AUTHORS)
Eric S. Raymond <esr@thyrsus.com>. David Relson <relson@osagesoftware.com>. Matthias Andree <matthias.andree@gmx.de>. Greg Louis <glouis@dynamicro.on.ca>.
برای دریافت بهروزرسانیها، به صفحه پروژه bogofilter[6] مراجعه کنید.
همچنین ببینید (SEE ALSO)
یادداشتها (NOTES)
- 1.
- A Plan For Spam
- 2.
- Spam Detection
- 3.
- A Statistical Approach to the Spam Problem
- 4.
- Another improvement
- 5.
- the R project website
- 6.
- bogofilter project page
| 05/19/2019 | Bogofilter |