SIEVE-FILTER(1) Pigeonhole SIEVE-FILTER(1)

sieve-filter - ابزار پالایش صندوق پستی Sieve متعلق به Pigeonhole

هشدار: این ابزار هنوز آزمایشی است. این راهنما را با دقت بخوانید و پیش از استفاده از این ابزار، از هر ایمیل مهمی پشتیبان تهیه کنید. همچنین توجه داشته باشید که برخی از قابلیت‌های مستندشده در اینجا هنوز پیاده‌سازی نشده‌اند؛ این موارد در جای مناسب به روشنی مشخص شده‌اند.

sieve-filter [options] script-file source-mailbox [discard-action]

دستور sieve-filter بخشی از پروژهٔ Pigeonhole (pigeonhole(7)) است که پشتیبانی از Sieve (RFC 5228) را به کارگزار امن IMAP و POP3 موسوم به Dovecot (dovecot(1)) اضافه می‌کند.

زبان Sieve در اصل برای پالایش پیام‌ها هنگام تحویل طراحی شده بود. با این حال، مواقعی وجود دارد که پالایش پیام‌های از پیش ذخیره‌شده در یک صندوق پستی مطلوب است، به عنوان مثال زمانی که یک باگ در اسکریپت Sieve باعث تحویل نادرست پیام‌های زیادی شده باشد. با استفاده از ابزار sieve-filter، اعمال یک اسکریپت Sieve روی همهٔ پیام‌های موجود در یک source-mailbox مشخص امکان‌پذیر می‌شود؛ که امکان حذف پیام‌ها، ذخیرهٔ آن‌ها در صندوق پستی دیگر، تغییر محتوای آن‌ها، و تغییر پرچم‌ها و کلیدواژه‌های اختصاص‌یافتهٔ IMAP را فراهم می‌سازد. تلاش‌ها برای ارسال پیام‌ها به دنیای بیرون به دلایل واضح به طور پیش‌فرض نادیده گرفته می‌شوند، اما با استفاده از گزینه‌های مناسب خط فرمان، امکان دریافت و مدیریت ایمیل‌های خروجی نیز وجود دارد.

اگر هیچ گزینه‌ای مشخص نشود، دستور sieve-filter در حالت شبیه‌سازی اجرا می‌شود که در آن فقط آنچه قرار است انجام شود را چاپ می‌کند، بدون اینکه عملاً کاری انجام دهد. از گزینهٔ -e برای فعال‌سازی اجرای واقعی اسکریپت استفاده کنید. همچنین، source-mailbox به طور پیش‌فرض فقط‌خواندنی باز می‌شود، به این معنی که معمولاً همیشه دست‌نخورده باقی می‌ماند. از گزینهٔ -W برای مجاز کردن تغییرات در source-mailbox استفاده کنید.

حتی با فعال بودن گزینهٔ -W، پیام‌ها در source-mailbox تنها ممکن است اصلاح شوند یا به پوشهٔ دیگری انتقال یابند. پیام‌ها هرگز از بین نمی‌روند مگر اینکه آرگومان discard-action غیر از keep (پیش‌فرض) مشخص شده باشد. اگر پالایهٔ Sieve تصمیم به ذخیرهٔ پیام در source-mailbox بگیرد (جایی که پیام از قبل در آنجا وجود دارد)، پیام هرگز در آنجا تکرار نمی‌شود. در این حالت، در صورت مشخص بودن -W، پرچم‌های IMAP پیام اصلی می‌توانند توسط مفسر Sieve با استفاده از افزونهٔ imap4flags اصلاح شوند. اگر خود پیام توسط مفسر Sieve ویرایش شود (مثلاً با استفاده از افزونهٔ editheader)، یک پیام جدید ذخیره شده و پیام قدیمی پاکسازی (expunge) می‌شود. با این حال، اگر -W مشخص نشود، پیام اصلی دست‌نخورده باقی می‌ماند و تغییرات دور ریخته می‌شوند.

اگرچه این ابزار بسیار کاربردی است، در صورت استفادهٔ نادرست می‌تواند بسیار مخرب نیز باشد. یک باگ کوچک در اسکریپت Sieve شما به همراه گزینه‌های اشتباه خط فرمان می‌تواند باعث دور ریخته شدن ایمیل‌های نادرست شود. و حتی اگر source-mailbox در حالت فقط‌خواندنی باز شود تا از چنین اتفاقاتی جلوگیری شود، باز هم اگر اسکریپت Sieve شما چنین تصمیمی بگیرد، می‌تواند سایر صندوق‌های پستی را با رونوشت‌های زائد از ایمیل‌هایتان پر کند. بنابراین به کاربران توصیه می‌شود این راهنما را با دقت مطالعه کنند و ابتدا از حالت شبیه‌سازی برای بررسی عملکرد اسکریپت بهره ببرند. و البته:

تهیهٔ پشتیبان برای هرگونه ایمیل مهم امری حیاتی است!

مسیر جایگزین فایل پیکربندی Dovecot.
اجبار به کامپایل. به طور پیش‌فرض، باینری کامپایل‌شده روی دیسک ذخیره می‌شود. زمانی که این باینری در اجرای بعدی sieve-filter یافت شود و زمان تغییر آن جدیدتر از فایل اسکریپت باشد، از همان استفاده شده و اسکریپت دوباره کامپایل نمی‌شود. این گزینه اسکریپت را مجبور به کامپایل می‌کند و در نتیجه هر باینری موجود را نادیده می‌گیرد. برای اطلاعات بیشتر دربارهٔ کامپایل Sieve به sievec(1) مراجعه کنید.
فعال‌سازی اشکال‌زدایی (debugging) مربوط به Sieve.
فعال کردن حالت اجرا. به طور پیش‌فرض، دستور sieve-filter در حالت شبیه‌سازی اجرا می‌شود که در آن چیزی تغییر نمی‌کند؛ بدین معنا که هیچ صندوق پستی به هیچ شکلی دستکاری نمی‌شود و هیچ اقدامی صورت نمی‌گیرد. این حالت تنها کاری را که قرار است انجام شود چاپ می‌کند. با استفاده از این گزینه، دستور sieve-filter فعال شده و اقدامات درخواستی را به انجام می‌رساند.
صندوق پستی‌ای که اقدام (ضمنی) keep در Sieve پیام‌ها را در آن ذخیره می‌کند. این گزینه به طور پیش‌فرض با source-mailbox برابر است. تعیین یک پوشهٔ متفاوت، باعث انتقال (یا رونوشت‌برداری در صورت ذکر نشدن -W) تمام پیام‌های نگه‌داشته‌شده به پوشهٔ مشخص‌شده می‌شود، به جای آنکه صرفاً در source-mailbox باقی بمانند. برای اطلاعات بیشتر دربارهٔ نام‌گذاری صندوق‌های پستی به توضیحات آرگومان source-mailbox مراجعه کنید.
تنظیم پیکربندی setting از فایل /usr/etc/dovecot/dovecot.conf و از userdb را با value مشخص‌شده بازنویسی (override) می‌کند. برای بازنویسی چندین تنظیم، گزینهٔ -o می‌تواند چندین بار تکرار شود.
ذخیرهٔ ایمیل خروجی در output-mailbox مشخص‌شده. به طور پیش‌فرض، دستور sieve-filter اقدام‌های Sieve مانند redirect، reject، vacation و notify را نادیده می‌گیرد، اما با استفاده از این گزینه می‌توان پیام‌های خروجی را به صندوق پستی مشخص‌شده ضمیمه کرد. این گزینه در حالت شبیه‌سازی تأثیری ندارد. پرچم‌های پیام‌های بازهدایت‌شده حفظ نمی‌شوند.
ارسال ایمیل خروجی (مثلاً آن‌هایی که توسط redirect، reject و vacation تولید شده‌اند) از طریق برنامهٔ مشخص‌شده. به طور پیش‌فرض، دستور sieve-filter اقدام‌های Sieve مانند redirect، reject، vacation و notify را نادیده می‌گیرد، اما با استفاده از این گزینه می‌توان پیام‌های خروجی را به stdin یک دستور شل خارجی فرستاد. این گزینه در حالت شبیه‌سازی تأثیری ندارد. مگر اینکه واقعاً بدانید چه کاری انجام می‌دهید، هرگز از این گزینه برای ارسال ایمیل به SENDMAIL استفاده نکنید!.
تعیین اسکریپت‌های اضافی برای اجرا پیش از اسکریپت اصلی. تعیین چندین آرگومان -s مجاز است و اسکریپت‌های مشخص‌شده به صورت متوالی و با ترتیبی که در خط فرمان آمده‌اند اجرا می‌شوند.
اجرای اسکریپت Sieve برای user مشخص‌شده. در صورت عدم ذکر، command با محیط کاربری که در حال حاضر به سیستم وارد شده است اجرا خواهد شد.
تولید خروجی پرگو (verbose) در حین پالایش.
فعال کردن دسترسی نوشتن در source-mailbox. این گزینه اجازه می‌دهد پیام‌ها از source-mailbox منتقل یا حذف شوند، محتوای آن‌ها تغییر کند، و پرچم‌ها و کلیدواژه‌های IMAP اختصاص‌یافته ویرایش شوند.
تعیین افزونه‌های در دسترس. این پارامتر فهرستی جداشده با فاصله از افزونه‌های فعال است. با قرار دادن پیشوند + یا - قبل از شناسهٔ افزونه‌ها، می‌توان افزونه‌ها را نسبت به مجموعه افزونه‌های فعال پیکربندی‌شده اضافه یا حذف کرد. اگر هیچ افزونه‌ای پیشوند + یا - نداشته باشد، تنها افزونه‌هایی که صراحتاً فهرست شده‌اند فعال خواهند شد. افزونه‌های ناشناخته نادیده گرفته شده و یک هشدار صادر می‌شود.

برای مثال -x "+imapflags -enotify" افزونهٔ منسوخ‌شدهٔ imapflags را فعال و افزونهٔ enotify را غیرفعال می‌کند. سایر افزونه‌های فعال به تنظیمات sieve_extensions و sieve_global_extensions بستگی دارند. به طور پیش‌فرض، یعنی زمانی که sieve_extensions و sieve_global_extensions بدون پیکربندی باقی بمانند، تمام افزونه‌های پشتیبانی‌شده در دسترس هستند، به جز افزونه‌های منسوخ‌شده یا مواردی که هنوز در دست توسعه قرار دارند.

اسکریپت Sieve را برای (کامپایل و) اجرا مشخص می‌کند.

توجه داشته باشید که این ابزار به دنبال یک فایل باینری از پیش کامپایل‌شده با پسوند .svbin و با نام پایه (basename) و مسیری یکسان با اسکریپت مشخص‌شده می‌گردد. از گزینهٔ -C برای غیرفعال کردن این رفتار از طریق اجبار به کامپایل اسکریپت در یک فایل باینری جدید استفاده کنید.

صندوق پستی مبدأ حاوی پیام‌هایی را مشخص می‌کند که پالایهٔ Sieve روی آن‌ها اعمال خواهد شد.

این نام یک صندوق پستی است، همان‌گونه که برای کلاینت‌های IMAP قابل مشاهده است، با این تفاوت که در قالب UTF-8 بیان می‌شود. جداکنندهٔ سلسله‌مراتب میان یک صندوق پستی والد و فرزند معمولاً '/' یا '.' است، اما این به قالب ذخیره‌سازی صندوق پستی و پیکربندی namespace انتخابی شما بستگی دارد. نام‌های صندوق پستی همچنین ممکن است به یک پیشوند namespace نیاز داشته باشند.

این صندوق پستی تغییر داده نخواهد شد مگر اینکه گزینهٔ -W مشخص شده باشد.

مشخص می‌کند چه اقدامی روی پیام‌های موجود در source-mailbox که توسط اسکریپت Sieve نگه‌داشته نشده یا به شکل دیگری ذخیره نشده‌اند صورت گیرد؛ یعنی پیام‌هایی که در صورت اجرای اسکریپت Sieve هنگام تحویل، به طور معمول دور ریخته می‌شدند. پارامتر discard-action یکی از مقادیر زیر را می‌پذیرد:
نگه‌داشتن پیام‌های دور ریخته‌شده در صندوق پستی مبدأ.
انتقال پیام‌های دور ریخته‌شده به mailbox مشخص‌شده. این کار برای مثال جهت انتقال پیام‌ها به یک صندوق پستی Trash (سطل زباله) مفید است. برای اطلاعات بیشتر دربارهٔ نام‌گذاری صندوق‌های پستی به توضیحات آرگومان source-mailbox مراجعه کنید.
علامت‌گذاری پیام‌های دور ریخته‌شده به عنوان \DELETED.
پاکسازی (expunge) پیام‌های دور ریخته‌شده، به این معنی که این پیام‌ها پس از پایان پالایش توسط این ابزار، به صورت برگشت‌ناپذیر حذف می‌شوند.
هنگامی که گزینهٔ -W مشخص نشده باشد، source-mailbox غیرقابل‌تغییر است و discard-action مشخص‌شده هیچ تأثیری ندارد. این بدان معناست که پیام‌ها حداکثر در یک مکان جدید رونوشت (کپی) می‌شوند. در مقابل، زمانی که -W مشخص شده باشد، پیام‌هایی که با موفقیت در جای دیگری توسط اسکریپت Sieve ذخیره شده‌اند همیشه از source-mailbox پاکسازی (expunge) می‌شوند، که در نتیجه پیام‌ها به مکان جدید منتقل می‌گردند. این فرایند فارغ از discard-action مشخص‌شده رخ می‌دهد. به یاد داشته باشید: تنها پیام‌های دور ریخته‌شده تحت تأثیر discard-action مشخص‌شده قرار می‌گیرند.

[...]

sieve-filter با یکی از مقادیر زیر به کار خود پایان می‌دهد:

0
پالایهٔ Sieve با موفقیت اعمال شد. (EX_OK, EXIT_SUCCESS)
1
عملیات با شکست مواجه شد. این مقدار تقریباً برای همهٔ خطاها بازگردانده می‌شود. (EXIT_FAILURE)
64
پارامتر نامعتبر داده شده است. (EX_USAGE)

/usr/etc/dovecot/dovecot.conf
فایل پیکربندی اصلی Dovecot.
/usr/etc/dovecot/conf.d/90-sieve.conf
تنظیمات مفسر Sieve (فراخوانی‌شده از فایل پیکربندی اصلی Dovecot).

گزارش باگ‌ها را به همراه خروجی doveconf -n به لیست پستی Dovecot به نشانی <dovecot@dovecot.org> ارسال کنید. اطلاعات دربارهٔ نحوهٔ گزارش باگ‌ها در این نشانی در دسترس است: http://dovecot.org/bugreport.html

dovecot(1), dovecot-lda(1), sieve-dump(1), sieve-test(1), sievec(1), pigeonhole(7)

2016-04-05 Pigeonhole for Dovecot v2.4