| FETCHMAIL(1) | fetchmail reference manual | FETCHMAIL(1) |
نام (NAME)
fetchmail - دریافت ایمیل از سرورهای دارای قابلیت POP، IMAP، ETRN یا ODMR
خلاصه دستور (SYNOPSIS)
fetchmail
[گزینه...]
[سرور_ایمیل...]
fetchmailconf
توضیحات (DESCRIPTION)
برنامه fetchmail یک ابزار بازیابی و هدایت (فوروارد) ایمیل است؛ این برنامه ایمیلها را از کارگزارهای راه دور دریافت کرده و به سامانه تحویل ماشین محلی (کلاینت) شما میفرستد. سپس میتوانید ایمیلهای دریافت شده را با استفاده از برنامههای کاربری متداول ایمیل مانند mutt(1)، elm(1) یا Mail(1) مدیریت کنید. ابزار fetchmail میتواند در حالت دیمن اجرا شود تا در فواصل زمانی مشخص به طور مکرر یک یا چند سیستم را بررسی (Poll) نماید.
برنامه fetchmail میتواند ایمیلها را از سرورهایی که از هر یک از پروتکلهای رایج دریافت ایمیل پشتیبانی میکنند جمعآوری کند: POP2 (قدیمی، که در نگارشهای آینده حذف خواهد شد)، POP3، IMAP2bis، IMAP4 و IMAP4rev1. این برنامه همچنین میتواند از پسوند ESMTP ETRN و ODMR استفاده کند. (اسناد RFC توصیفکننده تمام این پروتکلها در انتهای این صفحه راهنما فهرست شدهاند.)
اگرچه fetchmail در اصل برای استفاده بر روی پیوندهای متناوب TCP/IP (مانند اتصالات SLIP یا PPP) طراحی شده است، اما میتواند به عنوان یک عامل انتقال پیام (MTA) برای سایتهایی که به دلایل امنیتی از پذیرش تراکنشهای SMTP آغاز شده توسط فرستنده با sendmail خودداری میکنند نیز مفید باشد.
هشدارهای امنیتی و منسوخشدگی (DEPRECATION AND CRYPTOGRAPHIC SECURITY WARNINGS)
چندین الگوریتم رمزنگاری که در استانداردهای ایمیل برای احراز هویت به آنها ارجاع داده شده است، بر پایه الگوریتمهای MD4 یا MD5 یا SHA1 بودند که به ترتیب در سالهای ۱۹۹۰، ۱۹۹۱ و ۱۹۹۵ توسعه یافتند. پس از گذشت ۳۰ سال، این الگوریتمها دیگر امن تلقی نمیشوند و شکسته شده به شمار میآیند.
البته همه استانداردهای IETF و اسناد RFC آنها را کنار نگذاشتهاند و برخی پروتکلها همچنان به الگوریتمی که شامل MD4، MD5 یا SHA1 باشد نیاز دارند؛ بنابراین غیرفعال کردن کامل آنها در fetchmail موجب قطع دسترسی به پروتکلهایی نظیر ODMR یا روشهای احراز هویت محبوب سابق مانند POP3 با APOP خواهد شد.
توصیه میشود که اتصالات رمزنگاریشده با TLS از طریق درگاههای اختصاصی ۹۹۳ (برای IMAP4) یا ۹۹۵ (برای POP3) یا مذاکره درونباندی STARTTLS را به چنین روشهای احراز هویتی ترجیح دهید تا خطر افشای اطلاعات ورود کاهش یابد.
همچنین، روشهای احراز هویت ضعیف در نگارشهای بعدی fetchmail به تدریج حذف خواهند شد؛ لطفاً فایل NEWS را که همراه با توزیع fetchmail شما ارائه شده است بررسی کنید.
پشتیبانی و عیبیابی (SUPPORT, TROUBLESHOOTING)
برای عیبیابی، ردیابی و اشکالزدایی، باید سطح گزارشدهی جزئیات (Verbosity) را در fetchmail افزایش دهید تا متوجه شوید چه اتفاقی در حال رخ دادن است. برای این منظور، لطفاً هر دو دستور زیر را همراه با تمامی گزینههایی که معمولاً استفاده میکنید، اجرا نمایید:
-
env LC_ALL=C fetchmail -V -v --nodetach --nosyslog
- (این دستور در خط فرمان چاپ میکند که fetchmail پیکربندی شما را چگونه درک کرده است.)
-
env LC_ALL=C fetchmail -vvv --nodetach --nosyslog
- (این دستور در واقع fetchmail را با خروجی انگلیسی و پرجزئیات اجرا میکند.)
همچنین ببینید: مورد G3# در بخش پرسشهای متداول fetchmail.
اگر میخواهید خروجی به زبان محلی باشد (در صورت پشتیبانی)، میتوانید بخش LC_ALL=C را از دستورات بالا حذف کنید. اما اگر قصد ارسال پیام به لیستهای پستی را دارید، لطفاً آن را باقی بگذارید. نگهدارندگان برنامه لزوماً زبان محلی شما را متوجه نمیشوند، بنابراین از انگلیسی استفاده کنید.
شروع سریع (QUICKSTART)
۱. یک سرور SMTP محلی یا یک عامل تحویل ایمیل مبتنی بر خط فرمان مانند maildrop یا dovecot-lda را راهاندازی، پیکربندی، آزمایش و عیبیابی کنید. اطمینان حاصل کنید نامههایی که از طریق آن برای خود ارسال میکنید در مکان صحیح قرار میگیرند. تا زمانی که این بخش به درستی کار نکرده است به هیچ وجه ادامه ندهید، چرا که در غیر این صورت خطر از دست رفتن ایمیلها وجود دارد!
۲. یک فایل .fetchmailrc در پوشه خانگی خود ایجاد کنید که برای دریافتهای POP3 تقریباً شبیه به این باشد:
-
poll mailserver.example.org proto POP3 uidl user joe.sixpack keep ssl
در اینجا باید چند بخش را تنظیم کنید: mailserver.example.org نام سرور است. joe.sixpack نام کاربری مورد استفاده برای ورود به سرور است. گزینه keep مشخص میکند که پیامها باید به جای حذف شدن، روی سرور باقی بمانند. گزینه ssl مشخص میکند که اتصال باید رمزگذاری شود. اگر نیاز دارید به جای POP3 از IMAP استفاده کنید، عبارت "proto POP3 uidl" را به "proto IMAP" تغییر دهید.
اگر ترجیح دادید تحویل پیام از طریق یک برنامه خط فرمان صورت گیرد، یک گزینه mda اضافه کنید، برای مثال:
-
mda "/usr/bin/maildrop -d %T"
۳. و سپس مطمئن شوید که فایل ~/.fetchmailrc برای هیچکس جز خودتان قابل خواندن یا نوشتن نباشد:
-
chmod 0600 ~/.fetchmailrc
۴. در نهایت، fetchmail را در حالت پرجزئیات اجرا کنید و بررسی نمایید که کار میکند. برای محدود کردن پیامدها در صورت بروز خطا، ابتدا با دریافت دو پیام آزمایش میکنیم:
-
fetchmail -v --fetchlimit 2
اگر در این مرحله سرور POP3 دستور UIDL را رد کرد، نمیتوانید از گزینه "keep" روی آن سرور استفاده کنید و باید گزینههای uidl و keep را بردارید؛ اما توجه داشته باشید که در این حالت fetchmail پیامهایی را که با موفقیت تحویل داده است از روی سرور حذف خواهد کرد.
شروع سریع TLS (SSL) (TLS (SSL) QUICKSTART)
توزیع fetchmail شما باید همراه با یک فایل README.SSL ارائه شده باشد؛ آن را مطالعه کنید. توصیه میشود در صورت پشتیبانی سرور، تمامی درخواستهای بررسی را با گزینههای --ssl --sslproto tls1.2+ پیکربندی کنید که fetchmail را بر اساس استانداردهای پیشنهادی اخیر IETF و بهترین تجارب فعلی (RFC-8314، RFC-8996 و RFC-8997) پیکربندی میکند.
نگارش 6.6.0 و جدیدتر fetchmail از TLS و STARTTLS برای SMTP نیز پشتیبانی میکنند؛ برای نحوه پیکربندی آنها، گزینه --smtphost را ببینید.
مفاهیم (CONCEPTS)
اگر fetchmail با یک سرور POP یا IMAP استفاده شود (اما نه با ETRN یا ODMR)، برای هر حساب کاربری که از آن ایمیل دریافت میکند دارای دو حالت بنیادین عملکرد است: حالت تکمقصده (singledrop) و حالت چندمقصده (multidrop).
- در حالت تکمقصده (singledrop):
- برنامه fetchmail فرض میکند تمامی پیامهای موجود در حساب کاربری (صندوق پستی)، برای یک گیرنده واحد در نظر گرفته شدهاند. هویت گیرنده یا به طور پیشفرض همان کاربر محلی اجراکننده fetchmail خواهد بود، یا باید صریحاً در فایل پیکربندی مشخص شود.
- برنامه fetchmail زمانی از حالت تکمقصده استفاده میکند که در فایل پیکربندی fetchmailrc حداکثر یک کاربر محلی برای حساب یک سرور معین مشخص شده باشد.
- در حالت چندمقصده (multidrop):
- برنامه fetchmail فرض میکند که حساب کاربری سرور ایمیل در واقع شامل نامههایی برای چندین گیرنده گوناگون است. بنابراین، fetchmail باید تلاش کند «گیرنده پاکت نامه» مناسب را از سرایندهای ایمیل هر پیام استخراج کند. در این حالت کاری، fetchmail شباهت زیادی به یک عامل انتقال ایمیل (MTA) پیدا میکند.
- توجه داشته باشید که نه پروتکل POP و نه IMAP برای استفاده به این شیوه طراحی نشدهاند و به همین دلیل اطلاعات پاکت نامه اغلب مستقیماً در دسترس نیست. ارائهدهنده خدمات اینترنت (ISP) باید اطلاعات پاکت را در یکی از سرایندهای پیام ذخیره کرده باشد و همچنین باید به ازای هر گیرنده یک نسخه از پیام را نگهداری کند. اگر هر یک از این شرایط برقرار نباشد، این فرایند غیرقابلاعتماد خواهد بود؛ چرا که fetchmail مجبور میشود گیرنده(های) واقعی پاکت نامه را حدس بزند. این موضوع معمولاً برای پیامهای لیستهای پستی، نامههای Bcc شده یا پیامهایی با چندین گیرنده در دامنه شما ناموفق خواهد بود.
- برنامه fetchmail زمانی از حالت چندمقصده استفاده میکند که در فایل پیکربندی بیش از یک کاربر محلی و/یا یک نویسه عام (Wildcard) برای حساب سرور تعیین شده باشد.
- در حالتهای ETRN و ODMR:
- این ملاحظات صدق نمیکنند، زیرا این پروتکلها بر پایه SMTP هستند که اطلاعات صریح گیرنده پاکت نامه را ارائه میدهد. این پروتکلها همیشه از چندین گیرنده پشتیبانی میکنند.
هنگامی که هر پیام دریافت میشود، fetchmail معمولاً آن را از طریق SMTP به درگاه ۲۵ روی همان ماشینی که در حال اجرا است (localhost) تحویل میدهد، درست همانند اینکه پیام از طریق یک پیوند معمول TCP/IP وارد شده باشد. برنامه fetchmail گیرنده پاکت نامه را که به شیوه توضیحدادهشده قبلی به دست آمده به سرور SMTP ارائه میدهد. سپس نامه بر طبق قوانین MTA شما تحویل داده خواهد شد (عامل انتقال ایمیل معمولاً sendmail(8)، exim(8) یا postfix(8) است). فراخوانی MDA (عامل تحویل ایمیل) سیستم شما بر عهده MTA است. بنابراین کلیه سازوکارهای کنترل تحویل (مانند فایلهای .forward) که معمولاً از طریق MTA سیستم و عاملهای تحویل محلی در دسترس هستند، طبق معمول اعمال خواهند شد.
اگر در پیکربندی fetchmail شما یک MDA محلی تنظیم شده باشد (گزینه --mda را ببینید)، به جای ارتباط SMTP با درگاه ۲۵، مستقیماً از آن استفاده خواهد شد.
اگر برنامه fetchmailconf در دسترس باشد، به شما در تنظیم و ویرایش پیکربندی fetchmailrc کمک خواهد کرد. این برنامه تحت سامانه پنجرهای X اجرا میشود و نیازمند نصب زبان پایتون و ابزار Tk (همراه با اتصالات پایتون) است. اگر برای اولین بار fetchmail را برای حالت تککاربره راهاندازی میکنید، توصیه میشود از حالت Novice (مبتدی) استفاده کنید. حالت Expert (حرفهای) کنترل کامل پیکربندی fetchmail از جمله ویژگیهای چندمقصده را فراهم میکند. در هر دو حالت، دکمه 'Autoprobe' به شما خواهد گفت که یک سرور مشخص از کدام پروتکل پیشرفتهتر پشتیبانی میکند و مشکلات بالقوه با آن سرور را هشدار میدهد.
مقدمه این راهنما (PREFACE ON THIS MANUAL)
رشتههای زمان اجرای Fetchmail به چندین زبان محلیسازی شدهاند، اما این راهنما در اصل به زبان انگلیسی نگاشته شده است. در برخی شرایط، برای مقایسه خروجی با راهنما، شاید مفید باشد که با بازنویسی متغیرهای محلی (Locale)، خروجی fetchmail را به انگلیسی بازگردانید؛ برای نمونه:
-
env LC_ALL=C fetchmail # سایر گزینهها را قبل از علامت هش اضافه کنید
-
env LANG=en fetchmail # سایر گزینهها قبل از هش
یا موارد مشابه. جزئیات بسته به سیستمعامل متفاوت خواهد بود.
عملکرد عمومی (GENERAL OPERATION)
رفتار fetchmail توسط گزینههای خط فرمان و یک فایل کنترل اجرا به نام ~/.fetchmailrc کنترل میشود که نحو آن را در بخشهای بعدی توضیح میدهیم (این فایل همان فایلی است که برنامه fetchmailconf آن را ویرایش میکند). گزینههای خط فرمان، تعاریف موجود در ~/.fetchmailrc را بازنویسی (Override) میکنند.
هر نام سروری که بعد از گزینهها در خط فرمان مشخص کنید، بررسی (Query) خواهد شد. اگر هیچ سروری را در خط فرمان مشخص نکنید، هر مدخل 'poll' در فایل ~/.fetchmailrc شما بررسی خواهد شد، مگر آنکه از گزینه idle استفاده شده باشد (که توضیح داده خواهد شد).
برای تسهیل استفاده از fetchmail در اسکریپتها و خطوط لوله، این برنامه پس از پایان کار یک کد خروج مناسب بازمیگرداند -- بخش کدهای خروج (EXIT CODES) را در ادامه ببینید.
گزینههای زیر رفتار fetchmail را تغییر میدهند. به محض اینکه یک فایل .fetchmailrc کارآمد تنظیم کردید، به ندرت لازم است هیچیک از این گزینهها را در خط فرمان مشخص کنید.
تقریباً تمام گزینهها یک کلیدواژه متناظر دارند که میتوان از آن برای تعریف گزینه در یک فایل .fetchmailrc استفاده کرد.
برخی گزینههای خاص در اینجا پوشش داده نشدهاند، بلکه در بخشهای مربوط به احراز هویت و حالت دیمن که در ادامه میآیند مستند شدهاند.
گزینههای عمومی (General Options)
- -? | --help
- نمایش راهنمای گزینهها.
- -V | --version
- اطلاعات نگارش نسخه fetchmail شما را نمایش میدهد. هیچ دریافت ایمیلی انجام نمیشود. در عوض، برای هر سرور مشخص شده، تمام اطلاعات گزینههایی که در صورت اتصال fetchmail به آن سرور محاسبه میشدند، نمایش داده میشود. هر نویسه غیرقابلچاپ در گذرواژهها یا سایر رشتهها به صورت توالیهای گریز شبیه به زبان C با بکاسلش نمایش داده میشود. این گزینه برای بررسی اینکه گزینهها طبق نظر شما تنظیم شدهاند مفید است.
- -c | --check
- یک کد وضعیت برمیگرداند که نشان میدهد آیا نامهای در انتظار است یا خیر، بدون اینکه واقعاً نامهای را دریافت یا حذف کند (بخش کدهای خروج را در ادامه ببینید). این گزینه حالت دیمن را خاموش میکند (که در آن بیفایده بود). این گزینه با بررسی چندین سایت سازگاری خوبی ندارد و با ETRN یا ODMR کار نمیکند. اگر نامههای خواندهشده اما حذفنشده را در صندوق پستی سرور باقی بگذارید و پروتکل دریافت نتواند پیامهای نگهداریشده را از پیامهای جدید تشخیص دهد، مقدار مثبت کاذب (False positive) برمیگرداند. این بدان معناست که با IMAP به خوبی کار میکند، با POP2 کار نمیکند و ممکن است گهگاه تحت POP3 دچار اختلال شود.
- -s | --silent
- حالت بیصدا. تمامی پیامهای پیشرفت/وضعیت را که معمولاً در حین دریافت در خروجی استاندارد چاپ میشوند سرکوب میکند (اما پیامهای خطای واقعی را سرکوب نمیکند). گزینه --verbose این حالت را بازنویسی میکند.
- -v | --verbose
- حالت پرجزئیات (Verbose). تمامی پیامهای کنترلی رد و بدل شده بین fetchmail و سرور ایمیل در خروجی استاندارد چاپ میشوند. بر گزینه --silent اولویت دارد. تکرار این گزینه (-v -v) باعث چاپ اطلاعات تشخیصی بیشتری میشود.
- --nosoftbounce
- (از نگارش 6.3.10،
کلیدواژه: set no
softbounce، از
نگارش 6.3.10)
حالت بازگشت قطعی (Hard bounce). تمام خطاهای دائمی تحویل باعث میشوند پیامها از سرور بالادست حذف شوند، گزینه "no softbounce" را در ادامه ببینید. - --softbounce
- (از نگارش 6.3.10،
کلیدواژه: set
softbounce، از
نگارش 6.3.10)
حالت بازگشت موقت (Soft bounce). در صورت پشتیبانی پروتکل، تمام خطاهای دائمی تحویل باعث میشوند پیامها روی سرور بالادست باقی بمانند. این گزینه به صورت پیشفرض فعال است تا با مستندات قدیمی fetchmail مطابقت داشته باشد، و در نگارش بعدی fetchmail به حالت hard bounce تغییر خواهد کرد.
گزینههای دفع پیامها (Disposal Options)
- -a | --all | (از نگارش 6.3.3) --fetchall
- (کلیدواژه:
fetchall، از نگارش
3.0)
دریافت هر دو نوع پیامهای قدیمی (دیدهشده) و جدید از سرور ایمیل. حالت پیشفرض فقط دریافت پیامهایی است که سرور آنها را دیدهشده علامتگذاری نکرده است. تحت پروتکل POP3، این گزینه همچنین استفاده از RETR را به جای TOP اجبار میکند. توجه داشته باشید که دریافت در POP2 به گونهای رفتار میکند که گویی --all همیشه روشن است (بخش حالتهای شکست در دریافت را در زیر ببینید) و این گزینه با ETRN یا ODMR کار نمیکند. اگرچه گزینههای خط فرمان -a و --all و گزینه فایل کانفیگ fetchall از دیرباز پشتیبانی میشدند، گزینه خط فرمان --fetchall در نگارش 6.3.3 اضافه شد. - -k | --keep
- (کلیدواژه: keep)
نگهداری پیامهای دریافت شده بر روی سرور ایمیل راه دور. به طور معمول، پیامها پس از دریافت از پوشه سرور ایمیل حذف میشوند. مشخص کردن گزینه keep باعث میشود پیامهای دریافت شده در پوشه شما در سرور ایمیل باقی بمانند. این گزینه با ETRN یا ODMR کار نمیکند. اگر با POP3 استفاده شود، توصیه میشود گزینه --uidl یا کلیدواژه uidl را نیز مشخص کنید. - -K | --nokeep
- (کلیدواژه: nokeep)
حذف پیامهای دریافت شده از سرور ایمیل راه دور. این گزینه حذف نامههای دریافت شده را اجبار میکند. اگر در فایل .fetchmailrc خود پیشفرض را keep قرار داده باشید ممکن است مفید باشد. این گزینه در ETRN و ODMR به صورت اجباری روشن است. - --moveto <folder>
- (کلیدواژه: moveto)
در حالت IMAP، به جای پاکسازی (Flush) پیام، آن را به پوشه IMAP مشخص شده منتقل میکند. این گزینه برای جلوگیری از دست رفتن دادهها در هنگام آزمایش مفید است و در برخی پیادهسازیها روش ترجیحی برای حذف ایمیلها محسوب میشود؛ برای نمونه گوگل ترجیح میدهد ایمیلها را با انتقال به [Gmail]/Trash حذف کنید. فقط برای سرورهای IMAP در دسترس است. این گزینه فقط همراه با --proto imap پذیرفته میشود، اما در صورتی که IMAP به طور خودکار انتخاب شده باشد پذیرفته نمیشود. در صورتی که --keep فعال باشد، این گزینه بیاثر خواهد بود. - -F | --flush
- (کلیدواژه: flush)
فقط POP3/IMAP. این گزینه خطرناک است و در صورت استفاده نادرست میتواند باعث از دست رفتن ایمیلها شود. این گزینه قبل از دریافت پیامهای جدید، پیامهای قدیمی (دیدهشده) را از سرور ایمیل حذف میکند. هشدار: اگر ایمیلهای خود را با برنامههای کاربری دیگری به جز fetchmail بررسی کنید، این گزینه میتواند باعث از دست رفتن نامهها شود و موجب گردد fetchmail پیامی را که قبلاً هرگز دریافت نکرده است حذف کند. همچنین اگر سرور ایمیل پیام را پس از دریافت به عنوان دیدهشده علامتگذاری کند (سرورهای IMAP2)، این گزینه میتواند باعث از دست رفتن ایمیل شود. احتمالاً نباید از این گزینه در فایل پیکربندی خود استفاده کنید. اگر از آن با POP3 استفاده میکنید، حتماً باید گزینه 'uidl' را به کار ببرید. آنچه شما احتمالاً میخواهید همان تنظیم پیشفرض است: اگر '-k' را مشخص نکنید، fetchmail پس از تحویل موفق، پیامها را به طور خودکار حذف خواهد کرد. - --limitflush
- فقط POP3/IMAP، از نگارش 6.3.0. پیامهای بزرگتر از حد مجاز را قبل از دریافت پیامهای جدید از سرور ایمیل حذف میکند. حد اندازه باید به طور جداگانه با گزینه --limit مشخص شود. این گزینه با ETRN یا ODMR کار نمیکند.
گزینههای پروتکل و پرسوجو (Protocol and Query Options)
- -p <proto> | --proto <proto> | --protocol <proto>
- (کلیدواژه:
proto[col])
مشخص کردن پروتکل مورد استفاده هنگام برقراری ارتباط با سرور ایمیل راه دور. اگر پروتکلی مشخص نشود، مقدار پیشفرض AUTO است. گزینه proto میتواند یکی از موارد زیر باشد:
- AUTO
- آزمودن پروتکلهای IMAP، POP3 و POP2 (رد کردن مواردی که پشتیبانی از آنها کامپایل نشده است).
- POP2
- پروتکل باجه پست ۲ (POP2) (قدیمی و منسوخ، در نگارشهای آینده حذف خواهد شد).
- POP3
- پروتکل باجه پست ۳ (POP3).
- APOP
- استفاده از POP3 با احراز هویت قدیمی بر پایه چالش MD5. در برابر حملات مرد میانی (MitM) مقاوم تلقی نمیشود.
- RPOP
- استفاده از POP3 با احراز هویت RPOP.
- KPOP
- استفاده از POP3 با احراز هویت Kerberos V4 روی درگاه ۱۱۰۹.
- SDPS
- استفاده از POP3 با افزونههای SDPS مربوط به Demon Internet.
- IMAP
- پروتکلهای IMAP2bis، IMAP4 یا IMAP4rev1 (برنامه fetchmail به طور خودکار قابلیتهای آنها را شناسایی میکند).
- ETRN
- استفاده از گزینه ESMTP ETRN.
- ODMR
- استفاده از پروفایل On-Demand Mail Relay در ESMTP.
همه این جایگزینها اساساً به یک شیوه عمل میکنند (برقراری ارتباط با دیمنهای استاندارد سرور برای دریافت ایمیلی که قبلاً به صندوق پستی روی سرور تحویل داده شده است)، به جز ETRN و ODMR. حالت ETRN به شما امکان میدهد از یک سرور سازگار ESMTP (مانند BSD sendmail نگارش 8.8.0 یا بالاتر) بخواهید که بلافاصله یک اتصال فرستنده SMTP به ماشین کلاینت شما باز کند و فوروارد کردن هرگونه موردی را که در صف نامههای تحویلنشده سرور برای ماشین شما خطاب شده است آغاز کند. حالت ODMR نیازمند سروری با قابلیت ODMR است و مشابه ETRN عمل میکند، با این تفاوت که نیازی به داشتن DNS ایستا برای ماشین کلاینت ندارد.
- -U | --uidl
- (کلیدواژه: uidl)
اجبار به استفاده از UIDL (فقط با POP3 موثر است). ردیابی وضعیت «تازگی» پیامها در سمت کلاینت را اجبار میکند (UIDL مخفف "unique ID listing" است و در RFC1939 توصیف شده است). همراه با 'keep' استفاده میشود تا از یک صندوق پستی به عنوان منبع اخبار برای گروهی از کاربران استفاده شود. پرش از روی پیامهای دیدهشده در لاگ ثبت میشود، مگر اینکه لاگگیری خطاها از طریق syslog در حین اجرا در حالت دیمن انجام شود. توجه داشته باشید که fetchmail ممکن است بسته به قابلیتهای سرور بالادست این گزینه را به طور خودکار فعال کند. همچنین توجه داشته باشید که این گزینه ممکن است در نگارشهای بعدی حذف شده و به طور دائمی فعال گردد. همچنین ببینید: --idfile. - --idle (از 6.3.3)
- (کلیدواژه:
idle، از قبل از
6.0.0)
فعالسازی استفاده از دستور IDLE (فقط با IMAP موثر است). توجه داشته باشید که این قابلیت در هر زمان تنها با یک حساب کاربری و یک پوشه کار میکند؛ هنگامی که idle در حال اجراست، سایر پوشهها یا حسابها بررسی (Poll) نخواهند شد! اگرچه کلیدواژه idle در فایل کانفیگ مدتهاست پشتیبانی میشود، گزینه خط فرمان --idle در نگارش 6.3.3 اضافه شد. استفاده از IDLE به این معنی است که fetchmail به سرور IMAP اعلام میکند که اعلان پیامهای جدید را ارسال کند تا بتوان آنها را زودتر از موعد بررسیهای دورهای دریافت کرد. برنامه Fetchmail همچنین شامل راهکاری برای شبیهسازی IDLE است؛ این راهکار از نگارش 6.4.22 بیاثر شده بود و در نگارش 6.5.3 اصلاح شد (با کامیت 616e8c70 شکسته شد و در f91923b5 اصلاح گردید)، گزارش گیتلب #69. - --forceidle (از 6.5.0)
- (کلیدواژه:
forceidle، از 6.5.0)
استفاده از IDLE حتی اگر سرور آن را در قابلیتهای خود اعلام نکرده باشد. این گزینه خطرناک است و باید با احتیاط استفاده شود. - --idletimeout (از 6.5.0)
- (کلیدواژه:
idletimeout، از 6.5.0)
تنظیم مهلت زمانی (به ثانیه) برای دستور IDLE، زیرا سرورهای زیادی پروتکل را نقض میکنند (که به ۳۰ دقیقه زمان نیاز دارد) و پس از چند دقیقه اتصال را قطع میکنند. مقدار پیشفرض: ۱۶۸۰ ثانیه (= ۲۸ دقیقه). - -P <portnumber> | --service <servicename>
- (کلیدواژه:
service) از نگارش 6.3.0.
گزینه service به شما امکان میدهد نام سرویسی را برای اتصال مشخص کنید. در صورتی که پایگاهداده سرویسهای شما فاقد انتسابهای درگاه-سرویس مورد نظر باشد، میتوانید شماره درگاه دهدهی را در اینجا وارد کنید. برای جزئیات به مورد R12 در FAQ و مستندات --ssl مراجعه کنید. این گزینه جایگزین گزینه قدیمیتر --port شده است.
توجه داشته باشید که این گزینه به طور معجزهآسا حالتی میان اتصالهای پوششیافته با TLS و STARTTLS جابجا نمیکند؛ اگر شماره درگاه یا نام سرویسی را در اینجا مشخص کنید که تحت پوشش TLS است (یعنی قبل از ارسال دادههای برنامه به صورت متن آشکار، مذاکره TLS را آغاز میکند)، ممکن است لازم باشد --ssl را در خط فرمان یا ssl را در فایل rc خود تعیین نمایید.
- --port <portnumber>
- (کلیدواژه: port)
نگارش منسوخشده --service که نام سرویس را نمیپذیرد. توجه: این گزینه ممکن است در نگارشهای آینده حذف شود. - --principal <principal>
- (کلیدواژه:
principal)
گزینه principal به شما اجازه میدهد پرینسیپال سرویس را برای احراز هویت متقابل مشخص کنید. این گزینه تنها برای POP3 یا IMAP با احراز هویت Kerberos 4 کاربرد دارد و برای Kerberos 5 یا GSSAPI کاربرد ندارد. این گزینه ممکن است در نگارش آینده حذف شود. - -t <seconds> | --timeout <seconds>
- (کلیدواژه:
timeout)
گزینه timeout به شما اجازه میدهد مهلت زمانی عدم پاسخگویی سرور را به ثانیه تنظیم کنید. اگر سرور ایمیل پیام خوشآمدگویی نفرستد یا به دستورات در مدت ثانیههای تعیینشده پاسخ ندهد، fetchmail اتصال به آن را قطع خواهد کرد. بدون چنین مهلتی، ممکن است fetchmail تا زمان انقضای اتصال TCP در حالت تعلیق بماند و سعی کند از میزبانی که از کار افتاده است نامه دریافت کند که ممکن است بسیار طول بکشد. این امر به ویژه برای یک fetchmail که در پسزمینه اجرا میشود آزاردهنده خواهد بود. یک مهلت پیشفرض وجود دارد که fetchmail -V آن را گزارش میدهد. اگر یک اتصال مشخص پیاپی با مهلت زمانی مواجه شود، fetchmail آن را معلق فرض کرده و تلاش مجدد را متوقف میکند. در این صورت به کاربر فراخواننده از طریق ایمیل اطلاع داده خواهد شد.
- با شروع از fetchmail 6.3.10، کلاینت SMTP از حداقل زمانهای توصیه شده در RFC-5321 در هنگام انتظار برای پاسخ سرور SMTP/LMTP استفاده میکند. شما میتوانید این زمانها را بیشتر کنید، اما نمیتوانید آنها را کوتاهتر کنید. این کار برای جلوگیری از شرایط دشواری است که در آن fetchmail با مهلت کوتاهی (یک دقیقه یا کمتر) تنظیم شده باشد، پیامی حجیم (چندین مگابایت) را به MTA محلی ارسال کند و MTA برای پاسخ "OK" بیش از مهلت زمانی وقت نیاز داشته باشد؛ این بدان معناست که نامه به درستی تحویل داده میشود اما fetchmail متوجه آن نشده و پیام حجیم را بارها و بارها دریافت میکند.
- --plugin <command>
- (کلیدواژه: plugin)
گزینه plugin به شما اجازه میدهد از یک برنامه خارجی برای برقراری اتصال TCP استفاده کنید. این گزینه در صورتی که بخواهید از ssh استفاده کنید یا نیاز به تنظیمات خاص فایروال داشته باشید کاربردی است. برنامه در مسیر $PATH جستجو میشود و میتوان نام میزبان و درگاه را به عنوان آرگومان با استفاده از "%h" و "%p" به آن ارسال کرد (توجه داشته باشید که منطق جایگزینی ابتدایی است و این نشانهها باید توسط فاصله یا ابتدا و انتهای رشته احاطه شده باشند). برنامه Fetchmail در ورودی استاندارد افزونه خواهد نوشت و از خروجی استاندارد آن خواهد خواند. - --plugout <command>
- (کلیدواژه:
plugout)
کاملاً مشابه گزینه plugin در بالا، اما برای اتصالات SMTP استفاده میشود. - -r <name> | --folder <name>
- (کلیدواژه:
folder[s])
باعث میشود یک پوشه ایمیل غیرپیشفرض خاص روی سرور ایمیل (یا فهرستی از پوشهها با کاما) بازیابی شود. نحو نام پوشه وابسته به سرور است. این گزینه در POP3، ETRN یا ODMR در دسترس نیست. - --tracepolls
- (کلیدواژه:
tracepolls)
به fetchmail دستور میدهد تا اطلاعات ردیابی بررسی را به شکل 'polling account %s' و 'folder %s' به خط Received که تولید میکند اضافه کند، که در آن بخشهای %s با نام راه دور کاربر، برچسب بررسی، و پوشه (صندوق پستی) جایگزین میشوند (سرایند Received به طور معمول نام واقعی سرور را نیز شامل میشود). این گزینه میتواند برای فیلتر کردن ایمیلها بر اساس حسابی که از آن دریافت شدهاند مفید باشد. اطلاعات پوشه فقط از نسخه 6.3.4 به بعد نوشته میشود. - --ssl
- (کلیدواژه: ssl)
باعث میشود اتصال به سرور ایمیل از طریق SSL رمزگذاری شود، با مذاکره مستقیم SSL پس از اتصال (که حالت SSL-wrapped یا به اصطلاح RFC-8314، TLS ضمنی نامیده میشود). لطفاً توضیحات --sslproto را در ادامه ببینید! اطلاعات بیشتر در فایل README.SSL همراه با fetchmail موجود است.
- توجه داشته باشید که حتی اگر این گزینه حذف شود، fetchmail همچنان ممکن است برای POP3 یا IMAP از طریق ویژگی STLS یا STARTTLS اقدام به مذاکره SSL درونباندی کند. شما میتوانید از گزینه --sslproto برای تغییر این رفتار استفاده کنید.
- اگر درگاهی مشخص نشود، اتصال به درگاه شناختهشده نگارش SSL پروتکل پایه انجام میشود. این درگاه عموماً با درگاه پروتکل پایه متفاوت است. برای IMAP، درگاه ۱۴۳ برای پروتکل بدون رمز و درگاه ۹۹۳ برای پروتکل امن با SSL است؛ برای POP3، درگاه ۱۱۰ برای متن آشکار و درگاه ۹۹۵ برای نگارش رمزگذاریشده است.
- اگر سیستم شما فاقد ورودیهای متناظر در /etc/services است، گزینه --service را ببینید و شماره درگاه عددی را همانطور که در بند قبلی ذکر شد مشخص کنید.
- --nossl
- (کلیدواژه: nossl)
پیشفرض ssl را که قبلاً در defaults یا فایل rc داده شده است، لغو میکند (در صورتی که --nossl در خط فرمان داده شود). برای فعال کردن STARTTLS از --sslproto با آرگومان مناسب استفاده کنید. - --sslcert <name>
- (کلیدواژه:
sslcert)
برای احراز هویت کلاینت مبتنی بر گواهی. برخی سرورهای رمزگذاریشده با SSL برای احراز هویت به کلیدها و گواهیهای سمت کلاینت نیاز دارند. در بیشتر موارد، این اختیاری است. این گزینه محل گواهی کلید عمومی را که در زمان برقراری نشست SSL به سرور ارائه میشود مشخص میکند. اگر سرور نیازی به آن نداشته باشد الزامی نیست (اما میتواند ارائه شود). این فایل میتواند همان فایل کلید خصوصی باشد (فایل ترکیبی کلید و گواهی) اما توصیه نمیشود. همچنین --sslkey را در زیر ببینید.نکته: اگر از احراز هویت کلاینت استفاده کنید، نام کاربری از CommonName گواهی استخراج شده و نام تنظیم شده با --user را بازنویسی میکند.
- --sslkey <name>
- (کلیدواژه: sslkey)
نام فایل کلید خصوصی SSL سمت کلاینت را مشخص میکند. برخی سرورهای رمزگذاریشده با SSL برای احراز هویت به کلیدها و گواهیهای سمت کلاینت نیاز دارند. در بیشتر موارد اختیاری است. این گزینه محل کلید خصوصی مورد استفاده برای امضای تراکنشها با سرور در زمان برقراری نشست SSL را تعیین میکند.
- اگر برای باز کردن قفل کلید به گذرواژه نیاز باشد، درست قبل از برقراری نشست با سرور درخواست خواهد شد. این موضوع میتواند در حالت دیمن پیچیدگیهایی ایجاد کند.
- همچنین --sslcert را در بالا ببینید.
- --sslproto <value>
- (کلیدواژه:
sslproto، نکته:
تغییرات
معنایی از v6.4.0)
این گزینه به دلیل رفتارهای تاریخی fetchmail کاربرد دوگانه دارد. این گزینه هم نسخه پروتکل SSL/TLS و هم رفتار STARTTLS (در صورتی که --ssl مشخص نشده باشد) را کنترل میکند (ارتقای پروتکل به اتصال SSL یا TLS درونباندی). با این حال برخی گزینههای دیگر ممکن است TLS را اجباری کنند -- به ویژه، --sslcertck اکنون رفتار پیشفرض است و به SSL نیاز دارد.
- مقادیر مجاز برای --sslproto در ادامه آورده شدهاند. شما معمولاً باید یکی از گزینههای مذاکره خودکار را انتخاب کنید، مانند 'tls1.2+' یا 'auto' یا یکی از گزینههایی که به نویسه به علاوه (+) ختم میشوند. توجه داشته باشید که بسته به نگارش و پیکربندی کتابخانه TLS (OpenSSL، AWS-LC، wolfSSL)، برخی گزینهها باعث خطای زمان اجرا میشوند زیرا نگارشهای درخواستی توسط کتابخانه نصبشده پشتیبانی نمیشوند. پیش از استفاده در حالت بدون مراقبت، حتماً به خوبی آزمایش کنید!
- 'auto'
- (پیشفرض، همانند TLS1.2+). از نگارش 6.4.0، تغییر در 6.5.0. الزام به TLS. مذاکره خودکار TLSv1.2 یا جدیدتر، غیرفعال کردن دانگرید به نسخههای پایینتر.
- '', رشته خالی
- غیرفعال کردن STARTTLS. اگر --ssl برای همان سرور داده شده باشد، خطایی ثبت کرده و طوری رفتار میکند که انگار 'auto' استفاده شده است.
- 'SSL23'
- 'auto' را ببینید. منسوخشده، برای سازگاری با گذشته شناخته میشود.
- 'TLS'
- 'auto' را ببینید. برای تقارن با نامهای متد کلاینت OpenSSL.
- 'TLS1'
- الزام به TLSv1. این گزینه نسخه TLSv1.1 یا جدیدتر را مذاکره نمیکند و توصیه نمیشود. به جای آن از TLS1+ استفاده کنید مگر اینکه سرور شما مشکل داشته باشد.
- 'TLS1+'
- از نگارش 6.4.0. قابلیت مذاکره خودکار که TLSv1.0 و جدیدتر را مجاز میداند.
- 'TLS1.1'
- از نگارش 6.4.0. الزام دقیقاً به TLS v1.1.
- 'TLS1.1+'
- از نگارش 6.4.0. الزام به TLS. مذاکره خودکار TLSv1.1 یا جدیدتر.
- 'TLS1.2'
- از نگارش 6.4.0. الزام دقیقاً به TLS v1.2.
- 'TLS1.2+'
- از نگارش 6.4.0. الزام به TLS. مذاکره خودکار TLSv1.2 یا جدیدتر. این مقدار در fetchmail v6.5.x پیشفرض است.
- 'TLS1.3'
- از نگارش 6.4.0. الزام دقیقاً به TLS v1.3.
- 'TLS1.3+'
- از نگارش 6.4.0. الزام به TLS. مذاکره خودکار TLSv1.3 یا جدیدتر.
- پارامترهای ناشناخته
- همانند 'auto' رفتار خواهند کرد.
- نکته: شما به ندرت به چیزی غیر از '' (برای اجبار به اتصال بدون رمز) یا 'auto' (برای اجبار به TLS) نیاز پیدا خواهید کرد.
- --sslcertck
- (کلیدواژه:
sslcertck، پیشفرض
فعال از v6.4.0)
گزینه --sslcertck باعث میشود fetchmail استفاده از SSL/TLS را الزامی کند و در صورتی که نتواند با موفقیت SSL یا TLS را مذاکره کند، یا نتواند گواهی را تا یک مرجع مورد اعتماد (ریشه معتبر) اعتبارسنجی کند، اتصال را قطع کند. مراجع اعتماد به عنوان مجموعهای از گواهیهای معتبر محلی ارائه میشوند (گزینههای sslcertfile و sslcertpath را ببینید). اگر گواهی سرور قابل دریافت نباشد یا توسط یکی از گواهیهای معتبر امضا نشده باشد، fetchmail اتصال را بدون توجه به تنظیم sslfingerprint قطع خواهد کرد. - --nosslcertck
- (کلیدواژه: no
sslcertck، فقط در v6.4.X)
نقطه مقابل --sslcertck، این گزینه توصیه نمیشود. به fetchmail اجازه میدهد حتی در صورت عدم موفقیت گواهی سرور در بررسیهای اعتبارسنجی، به اتصال ادامه دهد. فقط باید همراه با --sslfingerprint استفاده شود. - --sslcertfile <file>
- (کلیدواژه:
sslcertfile، از v6.3.17)
فایلی را تنظیم میکند که fetchmail برای جستجوی گواهیهای محلی از آن استفاده میکند. پیشفرض خالی است. این گزینه میتواند علاوه بر --sslcertpath ارائه شود و گواهیهای موجود در --sslcertfile پیش از موارد موجود در --sslcertpath پردازش خواهند شد.
- این فایل یک فایل متنی حاوی مجموعهای از گواهیهای معتبر CA با فرمت PEM است.
- توجه داشته باشید که استفاده از این گزینه مانع از بارگذاری فایل پیشفرض گواهیهای معتبر SSL خواهد شد، مگر اینکه متغیر محیطی FETCHMAIL_INCLUDE_DEFAULT_X509_CA_CERTS را روی مقداری غیرخالی تنظیم کنید.
- --sslcertpath <directory>
- (کلیدواژه:
sslcertpath)
پوشهای را تنظیم میکند که fetchmail برای جستجوی گواهیهای محلی استفاده میکند. پیشفرض، پوشه پیشفرض OpenSSL شما است. این پوشه باید به شیوهای که OpenSSL انتظار دارد هش شده باشد - هر بار که گواهیای را در پوشه اضافه یا ویرایش میکنید، باید از ابزار c_rehash استفاده کنید. همچنین پس از ارتقای OpenSSL ممکن است نیاز به اجرای c_rehash باشد.
- این گزینه میتواند علاوه بر --sslcertfile ذکر شود.
- توجه داشته باشید که استفاده از این گزینه مانع از افزودن پوشه پیشفرض گواهیهای معتبر خواهد شد، مگر اینکه متغیر محیطی FETCHMAIL_INCLUDE_DEFAULT_X509_CA_CERTS را روی مقداری غیرخالی تنظیم کنید.
- --sslcommonname <common name>
- (کلیدواژه:
sslcommonname؛ از v6.3.9)
استفاده از این گزینه توصیه نمیشود. قبل از استفاده از آن، با مدیر سرور بالادست خود تماس بگیرید و درخواست استفاده از یک گواهی معتبر SSL کنید. اگر این کار ممکن نبود، میتوان از این گزینه برای تعیین نامی (CommonName) که fetchmail در گواهی سرور انتظار دارد استفاده کرد. یک سرور با پیکربندی درست این نام را برابر با نام میزبانی قرار میدهد که با آن در دسترس است، و fetchmail به طور پیشفرض همین انتظار را دارد. از این گزینه زمانی استفاده کنید که CommonName روی مقدار دیگری تنظیم شده است، تا از هشدار "Server CommonName mismatch" جلوگیری شود. - --sslfingerprint [{<algo>}]<fingerprint>
- (کلیدواژه:
sslfingerprint)
اثرانگشت (Fingerprint) کلید سرور را در نماد شانزدهشانزدهی با دونقطههای جداکننده گروههای دورقمی مشخص میکند. این فرمتی است که fetchmail برای گزارش اثرانگشت هنگام برقراری اتصال SSL استفاده میکند. هنگامی که این گزینه تعیین شود، fetchmail اثرانگشت کلید سرور را با مقدار دادهشده مقایسه میکند و اگر مطابقت نداشته باشند، بدون توجه به تنظیم sslcertck، اتصال با شکست مواجه میشود. این گزینه میتواند برای جلوگیری از حملات مرد میانی به کار رود، اما اثرانگشت سرور باید از کانالی امن دریافت یا تایید شده باشد.
- اثرانگشت میتواند با پیشوند نام الگوریتم خلاصه پیام EVP_MD در آکولد مشخص شود، برای مثال: {MD5}00:01:...:0F. تمام الگوریتمهای خلاصه که کتابخانه ارائهدهنده SSL شما پشتیبانی میکند قابل استفاده هستند. الگوریتمی معقول انتخاب کنید، مانند SHA256. اگر پیشوند {algo} حذف شود، برای سازگاری با fetchmail 6.4 و قدیمیتر از MD5 استفاده میشود.
- استفاده از این گزینه تا زمانی که --nosslcertck فعال باشد، مانع از چاپ خطاهای اعتبارسنجی گواهی میشود.
- برای
دریافت
اثرانگشت
گواهی
ذخیرهشده
در فایل cert.pem،
دستور زیر
را اجرا
کنید:
openssl x509 -in cert.pem -noout -sha256 -fingerprint
برای جزئیات بیشتر، ببینید: x509(1ssl).
گزینههای کنترل تحویل (Delivery Control Options)
- -S <hosts> | --smtphost <hosts>
- (کلیدواژه:
smtp[host])
(از نگارش 6.6.0، برنامه fetchmail از TLS و STARTTLS برای میزبانهای SMTP پشتیبانی میکند)
(از نگارش 6.5.6، برنامه fetchmail نحوه تولید آدرسهای مستقیم IP مطابق با RFC-5321 را از رشته عددی IPv4 یا IPv6 میداند)
- فهرستی از
میزبانها
را برای
هدایت و
فوروارد
ایمیل به
آنها مشخص
میکند (یک
یا چند نام
میزبان با
کاما).
میزبانها
به ترتیب
فهرست
آزمایش
میشوند؛
اولین
میزبانی که
بالا و فعال
باشد به
عنوان مقصد
هدایت برای
اجرای جاری
انتخاب
میشود. اگر
این گزینه
تعیین
نشود،
مقدار
پیشفرض 'localhost'
خواهد بود.
هر نام
میزبان
میتواند
یک شماره
درگاه پس از
نام خود
داشته باشد
که با یک
اسلش (/) جدا
میشود؛
درگاه
پیشفرض "smtp"
است. اگر یک
مسیر مطلق
(شروع با /)
مشخص کنید،
به عنوان
نام سوکت
یونیکس
پذیرنده
اتصالات LMTP
تفسیر
خواهد شد
(همانند
آنچه توسط
دیمن Cyrus IMAP
پشتیبانی
میشود).
مثال:--smtphost server1,server2/2525,server3,/var/imap/socket/lmtp
این گزینه میتواند با ODMR استفاده شود و fetchmail را به یک رله بین سرور ODMR و گیرنده SMTP یا LMTP تبدیل کند. - هر نام میزبان برای سرورهای SMTP تا چهار گزینه را که با اسلش (/) جدا میشوند پشتیبانی میکند:
- /25 یا /587 یا /smtp یا /465 یا /smtps
- شماره ۲۵ یا هر عدد دیگری بین ۱ و ۶۵۵۳۵ نشاندهنده شماره درگاه اتصال است؛ smtp یا هر نام سرویس دیگری که سیستم بتواند آن را ترجمه کند (پیکربندیهای ساده میتوانند از /etc/services استفاده کنند)؛ در صورت عدم ارائه، fetchmail از شماره درگاههای پیشفرض استفاده خواهد کرد.
یکی از موارد:
- /notls
- مذاکره اختیاری STARTTLS را حتی در صورت پیشنهاد از طرف سرور غیرفعال میکند. این مورد در صورتی که نام میزبان دقیقاً localhost باشد ضمنی اعمال میشود.
- /starttls
- سرور را ملزم میکند تا در پیام Extended Hello (EHLO) قابلیت STARTTLS را ارائه دهد و گواهی سرور را طوری اعتبارسنجی میکند که گویی --sslcertck تنظیم شده است. درگاه پیشفرض ۲۵ خواهد بود.
- /tls
- مذاکره پوشش TLS را پیش از تبادل پیام خوشآمدگویی آغاز میکند و اعتبارسنجی گواهی سرور را مانند --sslcertck الزامی میداند. درگاه پیشفرض ۴۶۵ خواهد بود.
- هیچکدام از /notls، /tls، /starttls:
- رفتار به صورت TLS اختیاری (به جز localhost، به بالا نگاه کنید). در صورت ارائه توسط سرور برای مذاکره STARTTLS تلاش میکند، اما اصراری بر اعتبارسنجی گواهی نخواهد داشت (مانند رفتار --nosslcertck).
- /tlsproto=PROTO
- به گونهای رفتار میکند که گویی --sslproto PROTO داده شده است. اگر /notls فعال باشد نادیده گرفته میشود.
- /servername=NAME
- نام گواهی مورد انتظار X.509 را به NAME تغییر میدهد و آن را از طریق Server Name Indication (SNI) ارسال میکند. اگر /notls فعال باشد نادیده گرفته میشود.
- نکته ۱: هر متنی که صریحاً شناسایی نشود، به عنوان نام سرویس در نظر گرفته خواهد شد؛ خطاهای نگارشی میتوانند به صورت خطاهای گیجکننده getaddrinfo() نمایش داده شوند.
- نکته ۲: در صورت مشخص کردن گزینههای متناقض، آخرین گزینه اعمال خواهد شد.
- مثال:
--smtphost dnsname.example.org/25/starttls/tlsproto=tls1.3/servername=commonname.example.com
دستور فوق dnsname.example.org را آدرسدهی کرده، روی درگاه ۲۵ به آن متصل میشود، فرمان STARTTLS صادر میکند، به TLS v1.3 ارتقا میدهد و انتظار دارد که گواهی X.509 سرور با نام commonname.example.com مطابقت داشته باشد.
- --esmtpname <authid>
- (از نگارش 6.5.7؛ کلیدواژه: esmtpname، از نگارش 5.9.9) شناسه احراز هویت را برای SMTP AUTH جهت ورود به سرور SMTP تعیین میکند. به طور پیشفرض از متغیرهای محیطی FETCHMAILUSER، LOGNAME یا USER کاربر جاری گرفته میشود.
- --esmtppassword <secret>
- (از نگارش 6.5.7؛ کلیدواژه: esmtppassword، از نگارش 5.9.9) گذرواژه را برای SMTP AUTH جهت ورود به سرور SMTP تعیین میکند. میتوان به جای فایل rc، آن را در فایل .netrc نیز قرار داد.
- --fetchdomains <hosts>
- (کلیدواژه:
fetchdomains)
در حالت ETRN یا ODMR، فهرستی از دامنههایی را مشخص میکند که سرور باید پس از برقراری اتصال نامهها را برای آنها تحویل دهد. پیشفرض، نام کامل FQDN ماشینی است که fetchmail را اجرا میکند. - -D <domain> | --smtpaddress <domain>
- (کلیدواژه:
smtpaddress)
دامنهای را که باید به آدرسهای خطوط RCPT TO ارسالی به SMTP افزوده شود مشخص میکند. در صورت عدم تعیین، نام سرور SMTP برای SMTP/LMTP و 'localhost' برای سوکت یونیکس استفاده میشود. - --smtpname <user@domain>
- (کلیدواژه:
smtpname)
کاربر و دامنهای را که باید در خطوط RCPT TO ارسالی به SMTP قرار گیرند تعیین میکند. کاربر پیشفرض همان کاربر محلی جاری است. - -Z <nnn> | --antispam <nnn[, nnn]...>
- (کلیدواژه:
antispam)
فهرستی از خطاهای عددی SMTP را مشخص میکند که باید به عنوان پاسخ مسدودسازی هرزنامه (Spam-block) تفسیر شوند. مقدار 1- این گزینه را غیرفعال میکند. - -m <command> | --mda <command>
- (کلیدواژه: mda)
به fetchmail امکان میدهد تا به جای ارسال از طریق SMTP یا LMTP، مستقیماً از یک عامل تحویل محلی پیام (MDA یا LDA) استفاده کند.
- برای جلوگیری از گم شدن نامهها، از این گزینه فقط با MDAهایی مانند maildrop یا MTAهایی مانند sendmail استفاده کنید که در صورت پر بودن دیسک یا سایر خطاهای تحویل با وضعیت غیرصفر خارج میشوند؛ وضعیت غیرصفر به fetchmail اعلام میکند که تحویل ناموفق بوده و مانع حذف پیام از سرور میشود.
- اگر fetchmail به عنوان کاربر ریشه (Root) اجرا شود، شناسه کاربری را هنگام تحویل نامه از طریق MDA به این صورت تنظیم میکند: ابتدا متغیرهای FETCHMAILUSER، LOGNAME و USER بررسی میشوند. در صورت تعریف نشدن هیچیک، از شناسه کاربری واقعی استفاده میشود.
برخی گزینههای ممکن برای MDA عبارتند از: "/usr/sbin/sendmail -i -f %F -- %T"، "/usr/bin/deliver" و "/usr/bin/maildrop -d %T". آدرسهای تحویل محلی در هر جا که %T قرار دهید درج میشوند؛ آدرس فرستنده پیام (From) در هر جا که %F قرار دهید درج خواهد شد.
رشتههای %F یا %T را درون کوتیشن تکی (') قرار ندهید! برنامه fetchmail قبل از ارسال دستور به شل، خود آدرسها را درون کوتیشن تکی محصور میکند.
هرگز از فراخوانی MDA به شیوهای که بر اساس محتوای To/Cc/Bcc تصمیمگیری میکند استفاده نکنید (مانند "sendmail -i -t" یا "qmail-inject")؛ این کار باعث حلقههای بیپایان پستی خواهد شد.
- --lmtp
- (کلیدواژه: lmtp)
تحویل را از طریق LMTP انجام میدهد. در صورت انتخاب این گزینه، میزبان سرویس و درگاه باید صریحاً برای هر میزبان در فهرست smtphost تعیین شود؛ درگاه پیشفرض ۲۵ پذیرفته نخواهد شد. - --bsmtp <filename>
- (کلیدواژه: bsmtp)
افزودن نامههای دریافت شده به یک فایل BSMTP. این فایل حاوی دستورات SMTP است که معمولاً هنگام ارسال به دیمن شنونده SMTP تولید میشدند. آرگومان '-' باعث نوشتن دستهای در خروجی استاندارد میشود که عمدتاً برای اشکالزدایی کاربرد دارد. - --bad-header {reject|accept}
- (کلیدواژه:
bad-header؛ از v6.3.15)
تعیین نحوه برخورد fetchmail با پیامهای دارای سرایندهای نادرست یا نامعتبر (رد کردن با reject یا پذیرش با accept).
گزینههای کنترل محدودیت منابع (Resource Limit Control Options)
- -l <maxbytes> | --limit <maxbytes>
- (کلیدواژه: limit)
حداکثر اندازه بر حسب بایت (Octet) را دریافت میکند که ۰ پیشفرض و به معنای «بدون محدودیت» است. در صورت غیرصفر بودن، پیامهای بزرگتر از این اندازه دریافت نشده و روی سرور باقی میمانند.ترکیب آن با --limitflush میتواند برای حذف پیامهای بزرگتر از حد در انتظار روی سرور استفاده شود.
- -w <interval> | --warnings <interval>
- (کلیدواژه:
warnings)
فاصله زمانی هشدارها را به ثانیه تعیین میکند. در حالت دیمن، این گزینه فاصله زمانی ارسال ایمیلهای هشدار در مورد پیامهای بزرگتر از حد مجاز به کاربر را کنترل میکند. - -b <count> | --batchlimit <count>
- (کلیدواژه:
batchlimit)
حداکثر تعداد پیامهایی را که قبل از بستن و برقراری مجدد اتصال به شنونده SMTP ارسال میشوند تعیین میکند (پیشفرض ۰ یعنی نامحدود). - -B <number> | --fetchlimit <number>
- (کلیدواژه:
fetchlimit)
محدود کردن تعداد پیامهای پذیرفتهشده از یک سرور مشخص در یک نوبت بررسی (Poll). پیشفرض بدون محدودیت است. - --fetchsizelimit <number>
- (کلیدواژه:
fetchsizelimit)
تعداد اندازههای پیام پذیرفتهشده از یک سرور معین در یک تراکنش واحد را محدود میکند. برای کاهش تاخیر در بارگیری اولین نامه زمانی که نامههای زیادی در صندوق پستی وجود دارد مفید است. پیشفرض ۱۰۰ است. - --fastuidl <number>
- (کلیدواژه:
fastuidl)
انجام جستجوی دودویی به جای خطی برای یافتن اولین UID دیدهنشده. جستجوی دودویی مانع از بارگیری UID تمام نامهها میشود و پهنای باند را ذخیره میکند. پیشفرض مقدار 'n' برابر با ۴ است. فقط برای POP3 کار میکند. - -e <count> | --expunge <count>
- (کلیدواژه:
expunge)
ترتیب نهایی کردن حذفها پس از تعداد معینی پیام را میدهد. در POP3 و POP2 با قطع و اتصال مجدد عمل میکند، و در IMAP با ارسال دستور EXPUNGE پس از هر N حذف انجام میشود.
گزینههای احراز هویت (Authentication Options)
- -u <name> | --user <name> | --username <name>
- (کلیدواژه:
user[name])
شناسه کاربری مورد استفاده هنگام ورود به سرور ایمیل را مشخص میکند. پیشفرض، نام کاربری شما در ماشین محلی اجراکننده fetchmail است. - -I <specification> | --interface <specification>
- (کلیدواژه:
interface)
الزام به بالا و فعال بودن یک دستگاه رابط شبکه خاص و داشتن یک آدرس IPv4 محلی یا راه دور مشخص پیش از انجام بررسی. در لینوکس و FreeBSD پشتیبانی میشود. فرمت:interface/iii.iii.iii.iii[/mmm.mmm.mmm.mmm]
- -M <interface> | --monitor <interface>
- (کلیدواژه:
monitor)
نظارت بر فعالیت یک رابط شبکه TCP/IP. اگر پیوند فعال باشد اما فعالیتی روی آن انجام نشده باشد، بررسی انجام نخواهد شد. - --auth <type>
- (کلیدواژه:
auth[enticate])
نوع احراز هویت را مشخص میکند. مقادیر ممکن عبارتند از: any، password، kerberos_v5، kerberos (یا kerberos_v4)، gssapi، cram-md5، otp، ntlm، msn (فقط POP3)، external (فقط IMAP) و implicit (یا ssh). مقدار پیشفرض any ابتدا روشهای بدون نیاز به گذرواژه و سپس روشهای ماسککننده گذرواژه را آزمایش میکند. نامهای سرویس GSSAPI مطابق RFC-2743 هستند، ببینید: Generic Security Service Application Program Interface (GSSAPI) Service Names.
گزینههای متفرقه (Miscellaneous Options)
- -f <pathname> | --fetchmailrc <pathname>
- مشخص کردن نام یا مسیر غیرپیشفرض برای فایل کنترل اجرای ~/.fetchmailrc. آرگومان "-" به معنی خواندن از ورودی استاندارد است. این فایل نباید دسترسی بازتر از 0700 داشته باشد.
- -i <pathname> | --idfile <pathname>
- (کلیدواژه: idfile)
تعیین نام جایگزین برای فایل .fetchids که برای ذخیره UID پیامها استفاده میشود. - --pidfile <pathname>
- (کلیدواژه:
pidfile؛ از v6.3.4)
بازنویسی مکان پیشفرض فایل PID که به عنوان فایل قفل استفاده میشود. - -n | --norewrite
- (کلیدواژه: no
rewrite)
غیرفعال کردن بازنویسی سرایندهای آدرس RFC-822 (To, From, Cc, Bcc, Reply-To). - -E <line> | --envelope <line>
- (کلیدواژه:
envelope؛ فقط در
حالت
چندمقصده)
سرایندی را که حامل آدرس پاکت نامه است تغییر میدهد (مانند 'X-Envelope-To' یا 'Delivered-To'). - -Q <prefix> | --qvirtual <prefix>
- (کلیدواژه:
qvirtual؛ فقط
چندمقصده)
پیشوند رشتهای انتساب داده شده به این گزینه از نام کاربری یافتشده در سرایند پاکت حذف خواهد شد (مفید برای qmail و دامنههای مجازی). - --configdump
- تجزیه فایل ~/.fetchmailrc و نمایش ساختار دادهای گزارش پیکربندی در زبان پایتون روی خروجی استاندارد.
- -y | --yydebug
- فعالسازی اشکالزدایی پارسر (مخصوص توسعهدهندگان).
گزینههای حذفشده (Removed Options)
- -T | --netsec
- قبل از نگارش 6.3.0 حذف شد، زیرا کتابخانه زمینهای inet6_apps منسوخ شده و دیگر در دسترس نیست.
احراز هویت کاربر و رمزنگاری (USER AUTHENTICATION AND ENCRYPTION)
تمامی حالتها به جز ETRN نیازمند احراز هویت کلاینت نزد سرور هستند. احراز هویت عادی کاربر در fetchmail بسیار شبیه به سازوکار احراز هویت ftp(1) است. شناسه کاربری و گذرواژه صحیح به سیستم امنیتی زیربنایی در سرور ایمیل بستگی دارد.
اگر سرور ایمیل یک ماشین یونیکس باشد که در آن یک حساب کاربری عادی دارید، نام کاربری و گذرواژه معمول شما با fetchmail استفاده میشود. اگر در هر دو ماشین سرور و کلاینت از یک نام کاربری یکسان استفاده میکنید، نیازی به تعیین شناسه کاربری با گزینه -u ندارید -- رفتار پیشفرض این است که نام کاربری شما در ماشین کلاینت به عنوان شناسه کاربری در ماشین سرور استفاده شود. اگر از نام متفاوتی استفاده میکنید، آن را با گزینه -u مشخص نمایید. مثلاً:
- fetchmail -u jsmith mailgrunt
رفتار پیشفرض fetchmail این است که پیش از برقراری اتصال، گذرواژه سرور ایمیل را از شما بپرسد. این روش امنترین شیوه استفاده از fetchmail است و تضمین میکند که گذرواژه شما افشا نشود. همچنین میتوانید گذرواژه خود را در فایل ~/.fetchmailrc مشخص کنید که هنگام استفاده در حالت دیمن یا در اسکریپتها مناسب است.
استفاده از فایلهای netrc (Using netrc files)
اگر گذرواژهای تعیین نکنید و fetchmail نتواند آن را از فایل ~/.fetchmailrc استخراج کند، پیش از درخواست تعاملی، به دنبال فایل ~/.netrc در پوشه خانگی شما میگردد؛ اگر مدخلی مطابق با سرور ایمیل در آن پیدا شود، از آن گذرواژه استفاده خواهد شد. نمونهای از فایل .netrc:
-
machine hermes.example.org login joe password topsecret
فایل netrc حاوی اطلاعات ورودی است که در اصل برای ftp(1) تنظیم شده بود، اما fetchmail برای گذرواژهها ساختارهای آن را درک میکند:
- machine name
- نام رایانه راه دور که نشانههای بعدی برای آن اعمال میشوند.
- login name
- نام کاربری مورد نظر.
- password string
- گذرواژه تعیینشده.
- default
- همانند machine است اما با هر نامی مطابقت دارد (fetchmail آن را نادیده میگیرد).
- account string
- توسط fetchmail نادیده گرفته میشود.
- macdef macro_name
- توسط fetchmail نادیده گرفته میشود.
لایههای سوکت امن (SSL) و امنیت لایه انتقال (TLS) (Secure Socket Layers (SSL) and Transport Layer Security (TLS))
تمامی پروتکلهای دریافت میتوانند از پوشش SSL یا TLS برای انتقال دادهها استفاده کنند. علاوه بر این، پروتکلهای POP3 و IMAP میتوانند از طریق STARTTLS (یا STLS) نیز SSL/TLS را مذاکره نمایند.
میتوانید با مشخص کردن گزینههایی که با --ssl شروع میشوند به سرویسهای رمزگذاریشده دسترسی پیدا کنید (نظیر --ssl، --sslproto، --sslcertck).
اگر TLS یا SSL پیکربندی نشده باشد، fetchmail معمولاً همچنان تلاش میکند از STARTTLS استفاده کند. در عمل، استفاده از TLS یا SSL همچنان الزامی است زیرا --sslcertck یک تنظیم پیشفرض است و به صورت ضمنی به STARTTLS نیاز دارد.
اجبار به استفاده از STARTTLS با --sslproto auto و غیرفعالسازی آن با --sslproto '' ممکن است.
استفاده از --sslcertck توصیه میشود: هنگام اتصال به یک سرور رمزگذاریشده، سرور گواهی خود را به کلاینت ارائه میدهد. در صورتی که هر یک از بررسیهای اعتبارسنجی شکست بخورد و گزینه --sslcertck فعال باشد، fetchmail اتصال را قطع میکند؛ چرا که باید فرض کند حمله مرد میانی در جریان است.
یک نکته احتیاطی در مورد استفاده از SSL: استفاده از گواهیهای خودامضاشده بدون اعتبارسنجی دقیق شاید در برابر استراق سمع غیرفعال محافظت کند، اما در برابر مهاجم فعال کارساز نیست و حمله مرد میانی با ابزارهایی مانند dsniff امکانپذیر است. بررسی دقیق گواهی توسط یک مرجع معتبر CA یا استفاده از تونل SSH اکیداً ترجیح داده میشود.
گونههای POP3 (POP3 VARIANTS)
نگارشهای نخستین POP3 (مانند RFC1081 و RFC1225) از روش ابتدایی احراز هویت مستقل با فایل .rhosts در سرور استفاده میکردند که به آن RPOP میگفتند. این شیوه به دلیل آسیبپذیری در برابر جعل هویت منسوخ شد و در RFC1460 کنار گذاشته شد.
سند RFC1460 احراز هویت APOP را معرفی کرد. در این شیوه، هر بار که fetchmail وارد میشود، یک هش MD5 از گذرواژه و زمان پیام خوشآمدگویی سرور را ارسال میکند. توجه داشته باشید که امروزه APOP دیگر در برابر حملات مرد میانی مقاوم تلقی نمیشود.
دستور RETR یا TOP (RETR or TOP)
برنامه fetchmail تلاش میکند با استفاده از دستور TOP تا جای ممکن طوری رفتار کند که سرور پیامها را دیدهنشده بداند. در صورتی که گزینه "fetchall" یا در شرایط خاص "keep" بدون "uidl" تنظیم شده باشد، همیشه از دستور RETR استفاده خواهد شد.
شیوههای دیگر احراز هویت (ALTERNATE AUTHENTICATION FORMS/METHODS)
اگر fetchmail با پشتیبانی از Kerberos ساخته شده باشد و احراز هویت Kerberos را مشخص کنید، در ابتدای هر پرسوجو برای دریافت بلیت Kerberos از سرور ایمیل تلاش خواهد کرد.
اگر از POP3 یا IMAP با احراز هویت GSSAPI استفاده کنید، fetchmail انتظار دارد که سرور قابلیت GSSAPI مطابق با RFC1731 یا RFC1734 داشته باشد.
اگر دیمن IMAP پاسخ PREAUTH را برگرداند، fetchmail مرحله احراز هویت را رد میکند (مفید هنگام اتصال به imapd از طریق ssh).
اگر از احراز هویت کلاینت با TLS1 استفاده کنید و سرور IMAP پاسخ AUTH=EXTERNAL دهد، fetchmail گذرواژه ارسال نخواهد کرد.
در POP3، اگر سرور چالش گذرواژه یکبارمصرف مطابق RFC1938 ارائه دهد، fetchmail از گذرواژه شما برای تولید پاسخ استفاده میکند.
پشتیبانی از RPA مربوط به Compuserve و همچنین احراز هویت NTLM مایکروسافت در IMAP نیز در صورت کامپایل بودن پشتیبانی میشوند.
احراز هویت ESMTP AUTH (ESMTP AUTH)
برنامه fetchmail از احراز هویت به سرور ESMTP در سمت کلاینت طبق RFC 4952 پشتیبانی میکند. سازوکارهای پشتیبانیشده شامل CRAM-MD5، PLAIN و LOGIN هستند. نام و گذرواژه را میتوان با کلیدواژههای 'esmtpname' و 'esmtppassword' تعیین کرد.
حالت دیمن (DAEMON MODE)
معرفی حالت دیمن (Introducing the daemon mode)
در حالت دیمن، fetchmail در پسزمینه قرار میگیرد و به طور مداوم اجرا میشود و پس از بررسی هر میزبان، برای مدت زمان معینی به خواب (Sleep) میرود.
راهاندازی حالت دیمن (Starting the daemon mode)
در خط فرمان با گزینه --daemon <interval> یا -d <interval> میتوان fetchmail را در حالت دیمن با فاصله زمانی مشخص (به ثانیه) اجرا کرد.
مثال:
- fetchmail -d 900
دستور فوق هر ۱۵ دقیقه سرورها را بررسی میکند.
همچنین میتوان با 'set daemon <interval>' در فایل rc فاصله را تعیین نمود. تنها یک فرایند دیمن به ازای هر کاربر مجاز است و fetchmail یک فایل قفل ایجاد میکند.
بیدار کردن دیمن پسزمینه (Awakening the background daemon)
فراخوانی مجدد fetchmail در خط فرمان باعث ارسال سیگنال SIGUSR1 به دیمن پسزمینه شده و آن را فوراً بیدار میکند تا چرخه بعدی بررسی را آغاز کند.
پایان دادن به دیمن پسزمینه (Terminating the background daemon)
گزینه -q یا --quit فرایند دیمن در حال اجرا را متوقف میکند (Kill).
گزینههای مفید برای حالت دیمن (Useful options for daemon mode)
گزینه -L <filename> یا --logfile <filename> (کلیدواژه: set logfile) پیامهای وضعیت را به یک فایل لاگ مشخص هدایت میکند. فایل لاگ باید پیش از اجرای برنامه وجود داشته باشد.
گزینه --syslog (کلیدواژه: set syslog) پیامهای وضعیت و خطا را به دیمن سیستم syslog(3) هدایت میکند. گزینه --nosyslog استفاده از syslog را خاموش میکند.
گزینه -N یا --nodetach مانع از رفتن فرایند دیمن به پسزمینه و جدا شدن از ترمینال میشود (مفید برای اشکالزدایی یا اجرا تحت نظارت init یا runit).
اگر فایل ~/.fetchmailrc را در حین اجرای دیمن تغییر دهید، در ابتدای چرخه بررسی بعدی شناسایی شده و دیمن مجدداً راهاندازی میشود.
گزینههای مدیریتی (ADMINISTRATIVE OPTIONS)
گزینه --postmaster <name> (کلیدواژه: set postmaster) نام کاربری آخرین پناهگاه را برای هدایت نامههای چندمقصده در صورت عدم یافتن گیرنده محلی مشخص میکند.
گزینه --nobounce همانند گزینه سراسری "set no bouncemail" رفتار میکند.
گزینه --invisible (کلیدواژه: set invisible) سعی میکند fetchmail را نامرئی کند؛ سرایند Received را حذف کرده و وانمود میکند نامه مستقیماً از سرور ایمیل آمده است.
گزینه --showdots (کلیدواژه: set showdots) نمایش نقاط پیشرفت را اجبار میکند حتی اگر خروجی به فایل برود.
گزینه --tracepolls اطلاعات ردیابی را به سرایند Received اضافه میکند.
حالتهای شکست در دریافت (RETRIEVAL FAILURE MODES)
پروتکلهایی که fetchmail برای ارتباط با سرورهای ایمیل استفاده میکند بسیار مقاوم هستند. در عملکرد عادی با فوروارد به درگاه ۲۵، هیچ پیامی از روی سرور حذف نمیشود مگر اینکه شنونده SMTP در سمت کلاینت تایید کند که پیام برای تحویل پذیرفته شده یا به دلیل مسدودسازی هرزنامه رد شده است.
هنگام فوروارد به یک MDA احتمال خطا بیشتر است. برخی MDAها ایمن هستند و در هر خطای تحویل وضعیت غیرصفر بازمیگردانند (مانند maildrop، sendmail، postfix و exim) و خطر از دست رفتن نامه با آنها وجود ندارد. اما MDAهای ناایمن ممکن است حتی در صورت شکست تحویل مقدار ۰ بازگردانند که باعث از دست رفتن نامه میشود.
در حالت معمول، fetchmail فقط تلاش میکند پیامهای جدید را دریافت کند و پیامهای خواندهشده قبلی را دستنخورده باقی میگذارد. اگر نامههای قدیمی ناخواسته دریافت شوند، دلایلی دارد: استفاده از POP2 (که مفهوم جدید/قدیم ندارد)، سرورهای POP3 که پیامها را به انتهای صندوق اضافه نمیکنند، یا مشکلات ایجاد فایل موقت.
کد IMAP از وجود یا عدم پرچم \Seen برای تشخیص جدید بودن پیام استفاده میکند.
در حالتهای ETRN و ODMR، برنامه fetchmail مستقیماً پیامها را دریافت نمیکند، بلکه از شنونده SMTP سرور میخواهد صف نامهها را به سمت کلاینت تخلیه کند.
فیلتر هرزنامه (SPAM FILTERING)
بسیاری از شنوندگان SMTP به مدیران اجازه میدهند فیلترهای هرزنامه تنظیم کنند. پاسخی که به خطوط MAIL FROM یا DATA داده میشود بسته به MTA متفاوت است: نسخههای جدید sendmail خطای 571 برمیگردانند؛ طبق RFC2821 پاسخ مناسب 550 است؛ نسخههای قدیمی exim خطای 501، postfix خطای 554 و Zmailer خطای 500 برمیگردانند.
کدهای بازگشتی که fetchmail آنها را به عنوان پاسخ هرزنامه شناسایی کرده و پیام را دور میاندازد، میتوان با گزینه 'antispam' تنظیم کرد.
اگر گزینه سراسری spambounce فعال باشد، پیامهای مسدودشده باعث ارسال پیام برگشتی به فرستنده میشوند.
مدیریت خطاهای SMTP/ESMTP (SMTP/ESMTP ERROR HANDLING)
علاوه بر مسدودسازی هرزنامه، fetchmail در برابر کدهای خطای زیر واکنشهای ویژهای نشان میدهد (که ممکن است با --softbounce تغییر کند):
- 452 (فضای ذخیرهسازی ناکافی سیستم)
- پیام در صندوق سرور برای دریافتهای بعدی باقی میماند.
- 552 (اندازه پیام بیش از حد مجاز تعیینشده)
- پیام از سرور حذف میشود و ایمیل برگشتی برای فرستنده ارسال میگردد.
- 553 (دامنه فرستنده نامعتبر است)
- پیام از سرور حذف میشود و تلاشی برای ارسال ایمیل برگشتی به فرستنده صورت نمیگیرد.
سایر خطاهای بزرگتر یا مساوی ۵۰۰ باعث ارسال ایمیل برگشتی به فرستنده میشوند مگر اینکه توسط --softbounce مهار شوند.
فایل کنترل اجرا (THE RUN CONTROL FILE)
روش ترجیحی برای تنظیم fetchmail، نوشتن فایل .fetchmailrc در پوشه خانگی شما است (به صورت مستقیم با ویرایشگر متنی یا غیرمستقیم با fetchmailconf). هنگام وجود تعارض میان آرگومانهای خط فرمان و آرگومانهای این فایل، خط فرمان اولویت دارد.
برای حفاظت از امنیت گذرواژهها، فایل ~/.fetchmailrc نباید مجوزی بازتر از 0700 داشته باشد.
نحو فایل کنترل اجرا (Run Control Syntax)
توضیحات با '#' آغاز شده و تا انتهای خط ادامه مییابند. فایل شامل مجموعهای از مدخلهای سرور یا دستورات گزینههای سراسری با نحو آزاد و نشانه-محور است.
چهار نوع نشانه وجود دارد: کلیدواژههای گرامر، اعداد، رشتههای بدون کوتیشن، و رشتههای داخل کوتیشن ("...").
هر مدخل سرور از یکی از کلیدواژههای 'poll' یا 'skip'، به همراه نام سرور، گزینههای سرور، توصیفات کاربران و گزینههای کاربر تشکیل میشود.
برای سازگاری با گذشته، کلمه 'server' مترادف 'poll' است.
میتوانید از کلمات اختیاری 'and'، 'with'، 'has'، 'wants' و 'options' برای خوانایی بیشتر متن انگلیسی استفاده کنید. علائم ':'، ';' و ',' نیز نادیده گرفته میشوند.
بررسی Poll در برابر Skip (Poll versus Skip)
فعل 'poll' به fetchmail میگوید که این میزبان هنگام اجرای بدون آرگومان بررسی شود. فعل 'skip' به fetchmail میگوید این میزبان را بررسی نکند مگر اینکه صریحاً در خط فرمان نام برده شود.
خلاصه کلیدواژهها و گزینهها (KEYWORD/OPTION SUMMARY)
در زیر گزینههای مجاز آمدهاند. پسوندهای کلیدواژه درون کروشه اختیاری هستند. حروفی که پس از '-' آمدهاند نشاندهنده گزینه کوتاه خط فرمان هستند. در صورتی که گزینه مربوط به یک حالت خاص باشد با 's' برای تکمقصده یا 'm' برای چندمقصده مشخص شده است.
در اینجا گزینههای سراسری مجاز آورده شدهاند:
| Keyword | Opt | Mode | Function |
| set daemon | -d | تنظیم فاصله زمانی بررسی پسزمینه به ثانیه. | |
| set postmaster | تعیین نام گیرنده آخرین پناهگاه (پیشفرض: کاربر اجراکننده fetchmail، یا "postmaster" اگر توسط ریشه اجرا شود). | ||
| set bouncemail | ارسال مستقیم ایمیل خطا به فرستنده (پیشفرض). | ||
| set no bouncemail | ارسال ایمیل خطا به مدیر پستچی محلی (طبق گزینه سراسری postmaster). | ||
| set no spambounce | عدم برگشت دادن ایمیلهای مسدودشده به دلیل هرزنامه (پیشفرض). | ||
| set spambounce | برگشت دادن ایمیلهای مسدودشده به دلیل هرزنامه به مقصد تعیینشده. | ||
| set no softbounce | حذف ایمیلهای غیرقابلتحویل دائمی. | ||
| set softbounce | نگهداری ایمیلهای غیرقابلتحویل دائمی طوری که گویی خطای موقت رخ داده است (پیشفرض). | ||
| set logfile | -L | نام فایلی که پیامهای خطا و وضعیت به آن افزوده شوند. فقط در حالت دیمن موثر است. | |
| set pidfile | -p | نام فایل PID (شناسه فرایند). | |
| set idfile | -i | نام فایلی که فهرستهای UID در آن ذخیره شوند. | |
| set syslog | لاگگیری خطاها از طریق syslog(3). | ||
| set no syslog | غیرفعال کردن لاگگیری خطا از طریق syslog(3) (پیشفرض). | ||
| set properties | مقدار رشتهای که توسط fetchmail نادیده گرفته میشود (برای اسکریپتها). |
در اینجا گزینههای مجاز سرور آورده شدهاند:
| Keyword | Opt | Mode | Function |
| via | تعیین نام DNS سرور ایمیل، بازنویسی نام poll. | ||
| proto[col] | -p | تعیین پروتکل (حساس به بزرگی و کوچکی حروف نیست): POP2، POP3، IMAP، APOP، KPOP. | |
| local[domains] | m | تعیین دامنه(هایی) که باید محلی در نظر گرفته شوند. | |
| port | تعیین درگاه سرویس TCP/IP (منسوخ، به جای آن از service استفاده کنید). | ||
| service | -P | تعیین نام سرویس یا شماره درگاه TCP/IP. | |
| auth[enticate] | تعیین نوع احراز هویت (پیشفرض 'any'). | ||
| timeout | -t | مهلت زمانی عدم فعالیت سرور به ثانیه (پیشفرض ۳۰۰). | |
| envelope | -E | m | تعیین نام سرایند حامل آدرس پاکت نامه. |
| no envelope | m | غیرفعال کردن جستجو برای آدرس پاکت نامه. | |
| qvirtual | -Q | m | پیشوند دامنه مجازی Qmail برای حذف از نام کاربری. |
| aka | m | تعیین نامهای مستعار DNS متناوب برای سرور ایمیل. | |
| interface | -I | تعیین رابط(های) IP که باید برای انجام بررسی فعال باشند. | |
| monitor | -M | تعیین آدرس IP برای نظارت بر فعالیت شبکه. | |
| plugin | تعیین دستور خارجی برای برقراری اتصالات سرور. | ||
| plugout | تعیین دستور خارجی برای برقراری اتصالات شنونده. | ||
| dns | m | فعالسازی جستجوی DNS برای حالت چندمقصده (پیشفرض). | |
| no dns | m | غیرفعال کردن جستجوی DNS برای حالت چندمقصده. | |
| checkalias | m | انجام مقایسه بر اساس آدرس IP در حالت چندمقصده. | |
| no checkalias | m | انجام مقایسه بر اساس نام در حالت چندمقصده (پیشفرض). | |
| uidl | -U | اجبار POP3 به استفاده از UIDL سمت کلاینت (توصیهشده). | |
| no uidl | خاموش کردن استفاده POP3 از UIDL سمت کلاینت (پیشفرض). | ||
| interval | بررسی این سایت تنها هر N چرخه بررسی؛ N عددی است. | ||
| tracepolls | افزودن اطلاعات ردیابی بررسی به سرایند Received. | ||
| principal | تنظیم پرینسیپال Kerberos (فقط با IMAP و کربروس مفید است). | ||
| esmtpname | تنظیم نام برای احراز هویت RFC2554 با سرور ESMTP. | ||
| esmtppassword | تنظیم گذرواژه برای احراز هویت RFC2554 با سرور ESMTP. | ||
| bad-header | نحوه برخورد با پیامهای دارای سرایند خراب: reject (پیشفرض) یا accept. | ||
| idletimeout | مهلت انتظار IDLE (به ثانیه)، گزینه --idle را ببینید. |
در اینجا توصیفات و گزینههای مجاز کاربر آورده شدهاند:
| Keyword | Opt | Mode | Function |
| user[name] | -u | توصیف کاربر که باید ابتدا و پس از توصیف سرور بیاید. نام کاربری راه دور را تعیین میکند. | |
| is | اتصال نامهای کاربری محلی و راه دور. | ||
| to | اتصال نامهای کاربری محلی و راه دور. | ||
| pass[word] | تعیین گذرواژه حساب کاربری راه دور. | ||
| ssl | اتصال به سرور بر روی پروتکل پایه مشخص شده با رمزنگاری SSL. | ||
| sslcert | تعیین فایل گواهی عمومی SSL سمت کلاینت. | ||
| sslcertck | فعالسازی بررسی دقیق گواهی و قطع اتصال در صورت عدم موفقیت. | ||
| no sslcertck | غیرفعالسازی بررسی دقیق گواهی و اجازه ادامه اتصال در صورت خطا. | ||
| sslcertfile | تعیین فایل حاوی گواهیهای معتبر CA. | ||
| sslcertpath | تعیین پوشه هششده با c_rehash حاوی گواهیهای معتبر CA. | ||
| sslcommonname | تعیین نام عمومی (CommonName) مورد انتظار گواهی سرور برای مطابقت. | ||
| sslfingerprint | تعیین اثرانگشت مورد انتظار گواهی سرور از هش MD5. | ||
| sslkey | تعیین فایل کلید خصوصی SSL سمت کلاینت. | ||
| sslproto | اجبار به نسخه خاص پروتکل SSL/TLS برای اتصال. | ||
| folder | -r | تعیین پوشه راه دور برای بررسی. | |
| smtphost | -S | تعیین میزبان(های) SMTP برای فوروارد. | |
| fetchdomains | m | تعیین دامنههایی که ایمیل باید برای آنها دریافت شود. | |
| smtpaddress | -D | تعیین دامنهای که باید در خطوط RCPT TO قرار گیرد. | |
| smtpname | تعیین کاربر و دامنهای که باید در خطوط RCPT TO قرار گیرند. | ||
| antispam | -Z | تعیین پاسخهای بازگشتی SMTP که مسدودسازی هرزنامه تلقی میشوند. | |
| mda | -m | تعیین MDA برای تحویل محلی. | |
| bsmtp | تعیین فایل دستهای BSMTP برای افزودن نامهها. | ||
| preconnect | دستوری که باید قبل از هر اتصال اجرا شود. | ||
| postconnect | دستوری که باید پس از هر اتصال اجرا شود. | ||
| keep | -k | عدم حذف پیامهای دیدهشده از سرور (برای POP3 استفاده از uidl توصیه میشود). | |
| flush | -F | پاکسازی تمام پیامهای دیدهشده قبل از بررسی (خطرناک). | |
| limitflush | پاکسازی تمام پیامهای بیش از حد مجاز قبل از بررسی. | ||
| fetchall | -a | دریافت تمام پیامها چه دیدهشده باشند و چه نباشند. | |
| rewrite | بازنویسی آدرسهای مقصد برای پاسخ دادن (پیشفرض). | ||
| stripcr | حذف کاراکترهای Carriage Return از انتهای خطوط. | ||
| forcecr | اجبار به قرار دادن Carriage Return در انتهای خطوط. | ||
| pass8bits | اجبار BODY=8BITMIME به شنونده ESMTP. | ||
| dropstatus | حذف خطوط Status و X-Mozilla-Status از ایمیلهای دریافتی. | ||
| dropdelivered | حذف خطوط Delivered-To از ایمیلهای دریافتی. | ||
| mimedecode | تبدیل quoted-printable به دادههای ۸ بیتی در پیامهای MIME. | ||
| idle | انتظار در حالت Idle برای پیامهای جدید پس از هر بررسی (فقط IMAP). | ||
| forceidle | اجبار به انتظار در حالت Idle پس از هر بررسی (فقط IMAP، اجباری). | ||
| no keep | -K | حذف پیامهای دیدهشده از روی سرور (پیشفرض). | |
| no flush | عدم پاکسازی تمام پیامهای دیدهشده قبل از بررسی (پیشفرض). | ||
| no fetchall | دریافت فقط پیامهای جدید (پیشفرض). | ||
| no rewrite | عدم بازنویسی سرایندها. | ||
| no stripcr | عدم حذف کاراکترهای بازگشت به ابتدای سطر (پیشفرض). | ||
| no forcecr | عدم اجبار به بازگشت به ابتدای سطر در انتهای خطوط (پیشفرض). | ||
| no pass8bits | عدم اجبار BODY=8BITMIME به شنونده ESMTP (پیشفرض). | ||
| no dropstatus | عدم حذف سرایندهای Status (پیشفرض). | ||
| no dropdelivered | عدم حذف سرایندهای Delivered-To (پیشفرض). | ||
| no mimedecode | عدم تبدیل quoted-printable به ۸ بیت در پیامهای MIME (پیشفرض). | ||
| no idle | عدم انتظار در حالت Idle پس از هر بررسی (فقط IMAP). | ||
| limit | -l | تنظیم محدودیت اندازه پیام. | |
| warnings | -w | تنظیم فاصله زمانی هشدار اندازه پیام. | |
| batchlimit | -b | حداکثر تعداد پیام برای فوروارد در یک اتصال. | |
| fetchlimit | -B | حداکثر تعداد پیام برای دریافت در یک اتصال. | |
| fetchsizelimit | حداکثر اندازه پیامها برای دریافت در یک تراکنش واحد. | ||
| fastuidl | استفاده از جستجوی دودویی برای اولین پیام دیدهنشده (فقط POP3). | ||
| expunge | -e | انجام پاکسازی نهایی (Expunge) پس از هر چند پیام (فقط IMAP و POP3). | |
| properties | مقدار رشتهای که توسط fetchmail نادیده گرفته میشود (برای اسکریپتها). |
تمامی گزینههای کاربر باید با یک توصیف کاربر (گزینه user یا username) آغاز شوند و پس از تمام توصیفات و گزینههای سرور قرار گیرند.
در فایل .fetchmailrc، آرگومان رشتهای 'envelope' میتواند با یک عدد که با فاصله از آن جدا شده مقدم شود که تعداد سرایندهای مورد نظر برای پرش را مشخص میکند.
کلیدواژههای فاقد سوییچ معادل (Keywords Not Corresponding To Option Switches)
گزینههای 'folder' و 'smtphost' میتوانند فهرستی از نامها با فاصله یا کاما بپذیرند.
همه گزینهها متناظر با آرگومانهای واضح خط فرمان هستند، به جز موارد زیر: 'via'، 'interval'، 'aka'، 'is'، 'to'، 'dns'/'no dns'، 'checkalias'/'no checkalias'، 'password'، 'preconnect'، 'postconnect'، 'localdomains'، 'stripcr'/'no stripcr'، 'forcecr'/'no forcecr'، 'pass8bits'/'no pass8bits'، 'dropstatus/no dropstatus'، 'dropdelivered/no dropdelivered'، 'mimedecode/no mimedecode'، 'no idle' و 'no envelope'.
گزینه 'via' برای زمانی است که بخواهید بیش از یک پیکربندی به یک سایت اشاره داشته باشند. در صورت وجود، آرگومان رشتهای به عنوان نام واقعی DNS سرور ایمیل برای پرسوجو در نظر گرفته میشود.
گزینه 'interval' به شما امکان میدهد یک سرور را با بسامدی کمتر از فاصله زمانی پایه بررسی کنید (مثلاً هر N چرخه یکبار).
گزینههای تکمقصده در برابر چندمقصده (Singledrop versus Multidrop options)
اگر قصد استفاده از حالت چندمقصده را دارید، لطفاً حتماً بخش استفاده و سوءاستفاده از صندوقهای چندمقصده را مطالعه فرمایید.
کلیدواژههای 'is' یا 'to' نام(های) محلی کلاینت (یا نگاشتهای نام سرور به کلاینت با =) را به نام کاربری سرور ایمیل پیوند میدهند. اگر انتهای فهرست با '*' باشد، نامهای ناشناخته مستقیماً عبور داده میشوند. از نگارش 6.3.5 به بعد، آدرسهای کامل ایمیل در سمت چپ این نگاشتها پشتیبانی میشوند.
هنگامی که تنها یک نام محلی وجود دارد، ایمیل به آن نام کاربری محلی صرفنظر از سرایندهای Received، To، Cc و Bcc هدایت میشود و جستجوی DNS انجام نمیگیرد.
هنگامی که بیش از یک نام محلی وجود دارد (حالت چندمقصده)، fetchmail به سرایند پاکت نامه (در صورت پیکربندی) و در غیر این صورت به سرایندهای Received، To، Cc و Bcc نگاه میکند تا آدرسها را مطابقت دهد.
اگر fetchmail نتواند هیچ نام کاربری یا دامنهای را مطابقت دهد، پیام برگشت داده میشود (Bounce).
گزینه 'dns' (پیشفرض روشن) بررسی آدرسهای صندوقهای چندمقصده را از طریق DNS کنترل میکند.
گزینه 'checkalias' بررسیهای DNS را با مقایسه آدرسهای IP گسترش میدهد تا با MTAهایی که نامهای متعارف متفاوتی برمیگردانند مقابله کند.
گزینه 'aka' به شما اجازه میدهد فهرستی از نامهای مستعار DNS سرور را از پیش تعیین کنید تا سرعت پردازش بالا رود و از جستجوهای غیرضروری DNS جلوگیری شود.
گزینه 'localdomains' فهرستی از دامنههایی را مشخص میکند که fetchmail باید آنها را محلی بداند و آدرسهای منطبق بر آنها بدون تغییر به شنونده یا MDA تحویل داده میشوند.
گزینه 'password' گذرواژه مورد نیاز برای ورود به سرور را مشخص میکند.
کلیدواژه 'preconnect' اجازه میدهد یک دستور شل پیش از هر بار برقراری اتصال با سرور اجرا شود (برای مثال اجرای ssh). اگر دستور وضعیت غیرصفر بازگرداند، بررسی آن سرور متوقف میشود.
مشابهاً، 'postconnect' دستوری را مشخص میکند که بلافاصله پس از قطع اتصال با سرور اجرا میشود.
گزینه 'forcecr' پایان دادن خطوط با CRLF را اجبار میکند.
گزینه 'stripcr' حذف کاراکترهای بازگشت به ابتدای سطر (CR) را کنترل میکند (پیشفرض هنگام استفاده از MDA روشن، و در SMTP خاموش است).
گزینه 'pass8bits' باعث ارسال BODY=8BITMIME به شنونده ESMTP میشود تا از خطای کلاینتهای نامناسب مایکروسافت که برچسب 7bit میزنند جلوگیری شود.
گزینه 'dropstatus' مشخص میکند آیا خطوط وضعیت Status و X-Mozilla-Status در نامههای دریافتی حذف شوند یا خیر.
گزینه 'dropdelivered' تعیین میکند آیا خطوط Delivered-To حذف شوند یا خیر (مفید برای جلوگیری از تداخل هنگام آینهسازی سرور).
گزینه 'mimedecode' تبدیل پیامهای quoted-printable به دادههای ۸ بیتی در پیامهای MIME را کنترل میکند.
گزینه 'idle' برای استفاده از قابلیت IDLE پروتکل IMAP طبق RFC2177 جهت باز نگه داشتن اتصال و دریافت بلادرنگ اعلانها است.
گزینه 'properties' برای ذخیره اطلاعات پیکربندی ویژه اسکریپتها استفاده میشود.
گزینههای متفرقه فایل کنترل اجرا (Miscellaneous Run Control Options)
کلمات 'here' و 'there' معنای خوانایی شبیه انگلیسی دارند؛ مثلاً 'user eric there is esr here'.
شناسههای معتبر پروتکل برای استفاده با کلیدواژه 'protocol' عبارتند از:
auto (یا AUTO) pop2 (یا POP2) pop3 (یا POP3) sdps (یا SDPS) imap (یا IMAP) apop (یا APOP) kpop (یا KPOP)
انواع مجاز احراز هویت عبارتند از: 'any'، 'password'، 'kerberos'، 'kerberos_v4'، 'kerberos_v5'، 'gssapi'، 'cram-md5'، 'otp'، 'msn' (فقط POP3)، 'ntlm'، 'implicit' و 'external' (فقط IMAP).
گزینههای سراسری شامل 'set logfile'، 'set daemon'، 'set postmaster' و 'set syslog' هستند.
اشکالزدایی FETCHMAIL (DEBUGGING FETCHMAIL)
کِرَش کردن Fetchmail (Fetchmail crashing)
راههای مختلفی وجود دارد که ممکن است fetchmail دچار "کِرَش" (خرابی ناگهانی و توقف عملکرد) شود. یک حالت خرابی شناختهشده، "خطای دسترسی به حافظه" (Segmentation fault یا سیگنال ۱۱ یا SIGSEGV یا به اختصار segfault) است. این خطاها میتوانند ناشی از سختافزار یا نرمافزار باشند. خطاهای نرمافزاری معمولاً به راحتی در همان نقطه بازتولید میشوند، در حالی که خطاهای سختافزاری تصادفی رخ میدهند.
برای حل خطاهای سختافزاری، قطعه معیوب را تعمیر یا تعویض کنید. پرسشهای متداول Sig11 میتواند در جزئیات به شما کمک کند.
برای حل خطاهای نرمافزاری، توسعهدهندگان به یک گزارش ردپای پشته ("stack backtrace") نیاز دارند.
فعالسازی تخلیه رونوشت حافظه (Core Dumps) در Fetchmail (Enabling fetchmail core dumps)
به طور پیشفرض، fetchmail جلوی ایجاد فایلهای رونوشت حافظه (core dump) را میگیرد زیرا این فایلها ممکن است حاوی گذرواژهها و دادههای حساس باشند. برای اشکالزدایی، دریافت backtrace از یک فایل core سریعترین راه حل است:
۱. برنامه fetchmail باید بدون حذف نمادهای کامپایل (strip) نصب شده باشد. برای بررسی میتوانید دستور زیر را اجرا کنید:
file `which fetchmail`
۲. محیط شل باید ایجاد فایلهای core را مجاز بداند. در شل bash دستور "ulimit -Sc unlimited" این اجازه را میدهد.
۳. باید به fetchmail نیز اعلام کنید که فایل core تولید کند؛ با گزینههای -d0 -v --nosyslog -N اجرا کنید.
پس از رخ دادن کِرَش، با دیباگر GDB فایل را باز کرده و دستور backtrace full را صادر نمایید.
تعامل با RFC 822 (INTERACTION WITH RFC 822)
هنگام تلاش برای تعیین آدرس فرستنده پیام، fetchmail سرایندها را به این ترتیب بررسی میکند:
Return-Path: Resent-Sender: Sender: Resent-From: From: Reply-To: Apparently-From:
این ترتیب برای مدیریت درست پیامهای لیستهای پستی در حالت چندمقصده در نظر گرفته شده است تا ایمیلهای برگشتی به مدیر لیست ارسال شوند نه نویسنده اصلی.
در حالت چندمقصده، ابتدا سرایند مشخص شده با 'envelope' بررسی میشود. سپس سرایندهای Resent-To:، Resent-Cc: و Resent-Bcc: و در صورت عدم وجود آنها، سرایندهای To:، Cc:، Bcc: و Apparently-To: بررسی میشوند.
مثالهای پیکربندی (CONFIGURATION EXAMPLES)
توصیه میکنیم گذرواژهها را در فایل $HOME/.netrc نگهداری کنید. فرمت پایه:
- poll SERVERNAME protocol PROTOCOL username NAME password PASSWORD
مثال:
-
poll pop.provider.net protocol pop3 username "jsmith" password "secret1"
یا با استفاده از کلمات مخفف:
-
poll pop.provider.net proto pop3 user "jsmith" password "secret1"
میتوان چندین سرور را فهرست کرد:
-
poll pop.provider.net proto pop3 user "jsmith" pass "secret1" poll other.provider.net proto pop2 user "John.Smith" pass "My^Hat"
تعریف مقادیر پیشفرض برای تمام پرسوجوها:
-
defaults proto pop3 user "jsmith" poll pop.provider.net pass "secret1" poll mail.provider.net user "jjsmith" there has password "secret2"
تعیین چند کاربر در یک سرور:
-
poll pop.provider.net proto pop3 port 3111 user "jsmith" with pass "secret1" is "smith" here user jones with pass "secret2" is "jjones" here keep
پیکربندی ساده چندمقصده:
-
poll pop.provider.net: user maildrop with pass secret1 to golux 'hurkle'='happy' snark here
پیکربندی چندمقصده با دامنههای محلی:
-
poll pop.provider.net localdomains loonytoons.org toons.org envelope X-Envelope-To user maildrop with pass secret1 to * here
مثال استفاده از تونل ssh و افزونه plugin:
-
poll mailhost.net with proto imap: plugin "ssh %h /usr/sbin/imapd" auth implicit; user esr is esr here
استفاده و سوءاستفاده از صندوقهای چندمقصده (THE USE AND ABUSE OF MULTIDROP MAILBOXES)
از ویژگی چندین گیرنده محلی با احتیاط استفاده کنید. تمام ویژگیهای چندمقصده در حالتهای ETRN و ODMR بیاثر هستند.
همچنین توجه داشته باشید که در حالت چندمقصده ممکن است نامههای تکراری مهار شوند. یک قطعه نامه در صورتی تکراری تلقی میشود که آدرس گیرنده پاکت مشخصی نداشته باشد، سرایندی کاملاً مشابه با پیام بلافاصله قبلی داشته باشد و بیش از یک مخاطب داشته باشد.
آدرسهای سرایند در برابر پاکت نامه (Header versus Envelope addresses)
مشکل بنیادین این است که با انداختن نامههای افراد متعدد در یک صندوق منفرد، اطلاعات حیاتی در مورد اینکه هر نامه برای چه کسی ارسال شده بوده است (آدرس پاکت نامه، در مقایسه با آدرسهای سرایند To/Cc طبق RFC822) از بین میرود (آدرس Bcc در انتهای دریافت در دسترس نیست). این «آدرس پاکت نامه» همان آدرسی است که برای هدایت صحیح ایمیل به آن نیاز دارید.
گاهی اوقات fetchmail میتواند آدرس پاکت نامه را از خطوط Received استخراج کند (به ویژه با sendmail).
به عنوان یک جایگزین بهتر، برخی سرورها سرایندی در پیام درج میکنند که حاوی رونوشتی از آدرس پاکت نامه است؛ مانند 'X-Original-To'، 'Delivered-To' یا 'X-Envelope-To'. این فرض را میتوان با گزینه -E یا 'envelope' تغییر داد.
به طور خلاصه، لیستهای پستی و نامههای Bcc شده تنها زمانی میتوانند به درستی کار کنند که سرور بالادست:
- (1)
- یک نسخه از پیام را به ازای هر گیرنده در دامنه شما ذخیره کند، و
- (2)
- اطلاعات پاکت نامه را در یک سرایند خاص (مانند X-Original-To، Delivered-To، X-Envelope-To) ثبت نماید.
روشهای مناسب استفاده از صندوقهای چندمقصده (Good Ways To Use Multidrop Mailboxes)
میتوان از چندین نام محلی برای مدیریت یک لیست پستی از سمت کلاینت استفاده کرد؛ مثلاً هدایت نامهها به یک نام مستعار محلی در ماشین کلاینت.
روشهای نامناسب استفاده از صندوقهای چندمقصده (Bad Ways To Abuse Multidrop Mailboxes)
صندوقهای پستی چندمقصده و اجرای fetchmail برای چندین کاربر در حالت دیمن به هیچ وجه همخوانی خوبی ندارند. مشکل اساسی نامههای لیستهای پستی است که فاقد آدرس گیرنده مجزا در سرایند هستند و به حساب کاربر اجراکننده (معمولاً root) تحویل داده میشوند، و کاربران Bcc شده هرگز نامههای خود را دریافت نخواهند کرد. اگر چارهای ندارید، مطمئن شوید که سرور شما سرایند پاکت نامه معتبری درج میکند.
سرعتبخشی به بررسی چندمقصده (Speeding Up Multidrop Checking)
برای سرعت بخشیدن به فرآیند بررسی، نامهای مستعار سرور ایمیل را با 'aka' از پیش تعریف کنید و در صورت اطمینان از کامل بودن لیست، با 'no dns' جستجوهای DNS را به طور کامل متوقف نمایید.
حذف ایمیلهای تکراری در حالت چندمقصده (Duplicate suppression on multidrop)
اگر کد مهار ایمیلهای تکراری fetchmail برای حساب شما کارساز نبود، میتوانید از sieve یا برنامه reformail بسته maildrop با گزینه -D به عنوان عامل تحویل استفاده کنید.
ساکس (SOCKS)
پشتیبانی از socks4/5 یک گزینه زمان کامپایل است. برای دور زدن پراکسی SOCKS میتوانید متغیر محیطی SOCKS_CONF=/dev/null را مقداردهی کنید:
env SOCKS_CONF=/dev/null fetchmail
کدهای خروج (EXIT CODES)
برای تسهیل استفاده از fetchmail در اسکریپتهای شل، یک کد وضعیت خروج برای نشان دادن وضعیت رخ داده برگردانده میشود:
- 0
- یک یا چند پیام با موفقیت دریافت شدند (یا در صورت استفاده از گزینه -c، در انتظار یافت شدند).
- 1
- هیچ نامهای در انتظار دریافت نبود.
- 2
- خطایی در هنگام باز کردن سوکت برای دریافت ایمیل رخ داد (خطای غیرقابلجبران شبکه).
- 3
- مرحله احراز هویت کاربر شکست خورد (نام کاربری یا گذرواژه نادرست بود).
- 4
- خطای مرگبار در پروتکل رخ داد.
- 5
- خطای نگارشی در آرگومانهای fetchmail، یا شکست دستور پیش/پس از اتصال.
- 6
- فایل کنترل اجرا مجوزهای دسترسی نامناسبی داشت.
- 7
- خطایی از سوی سرور گزارش شد یا مهلت زمانی در انتظار پاسخ سرور به پایان رسید.
- 8
- خطای انحصار سمت کلاینت (نسخه دیگری از fetchmail در حال اجرا است).
- 9
- مرحله احراز هویت به دلیل پاسخ "lock busy" سرور شکست خورد.
- 10
- خطا در حین باز کردن درگاه SMTP یا انجام تراکنش تحویل.
- 11
- خطای مرگبار DNS در هنگام شروع کار.
- 12
- فایل دستهای BSMTP باز نشد.
- 13
- بررسی به دلیل محدودیت تعداد پیام (گزینه --fetchlimit) متوقف شد.
- 14
- سرور اعلام مشغول بودن کرد (Server busy).
- 23
- خطای داخلی برنامه.
- 24 - 26, 28, 29
- کدهای داخلی هستند و نباید رخ دهند.
فایلها (FILES)
- ~/.fetchmailrc, $HOME/.fetchmailrc, $HOME_ETC/.fetchmailrc, $FETCHMAILHOME/fetchmailrc
- فایل پیشفرض کنترل اجرا (محل آن با متغیرهای محیطی قابل بازنویسی است).
- ~/.fetchids, $HOME/.fetchids, $HOME_ETC/.fetchids, $FETCHMAILHOME/.fetchids
- محل پیشفرض فایل ثبت آخرین UIDهای دیدهشده به ازای هر میزبان.
- ~/.fetchmail.pid, $HOME/.fetchmail.pid, $HOME_ETC/.fetchmail.pid, $FETCHMAILHOME/fetchmail.pid
- محل پیشفرض فایل قفل (PID file) برای جلوگیری از اجراهای همزمان در حالت غیرریشه.
- ~/.netrc, $HOME/.netrc, $HOME_ETC/.netrc
- فایل کنترل اجرای FTP که در صورت وجود به عنوان آخرین پناهگاه برای یافتن گذرواژه جستجو میشود.
- /var/run/fetchmail.pid
- فایل قفل در حالت ریشه در سیستمهای لینوکس.
- /etc/fetchmail.pid
- فایل قفل در حالت ریشه در سیستمهای فاقد /var/run.
محیط (ENVIRONMENT)
رفتار fetchmail با متغیرهای محیطی قابل تغییر است:
- FETCHMAILHOME
- در صورت تنظیم، فایلهای fetchmailrc، .fetchids و fetchmail.pid از این پوشه خوانده میشوند.
- FETCHMAILUSER
- تعیین نام کاربر فراخواننده برای اهدافی مانند ارسال اعلانهای خطا.
- FETCHMAIL_DISABLE_CBC_IV_COUNTERMEASURE
- غیرفعال کردن اقدام متقابل علیه حمله SSL CBC IV در صورت نیاز به اتصال با سرورهای ناسازگار.
- FETCHMAIL_POP3_FORCE_RETR
- اجبار به استفاده همیشگی از دستور RETR به جای TOP در POP3.
- FETCHMAIL_INCLUDE_DEFAULT_X509_CA_CERTS
- بارگذاری همیشگی مسیرهای پیشفرض گواهیهای معتبر CA برای SSL/TLS.
- FETCHMAIL_WOLFSSL_DEBUG
- فعالسازی حالت اشکالزدایی کتابخانه wolfSSL.
- HOME
- پوشه خانگی کاربر.
- HOME_ETC
- بازنویسی مقدار HOME برای خواندن فایلهای پیکربندی.
- SOCKS_CONF
- تعیین فایل پیکربندی کتابخانه SOCKS.
- SSL_CERT_DIR
- بازنویسی مسیر پیشفرض گواهیهای معتبر OpenSSL.
- SSL_CERT_FILE
- بازنویسی فایل دسته گواهیهای معتبر OpenSSL.
سیگنالها (SIGNALS)
اگر دیمن fetchmail به عنوان کاربر ریشه اجرا شود، سیگنال SIGUSR1 آن را از خواب بیدار کرده و بررسی تمامی سرورها را اجبار میکند. در حالت کاربری عادی نیز سیگنال SIGUSR1 برای بیدار کردن دیمن استفاده میشود.
باگها، محدودیتها و مشکلات شناختهشده (BUGS, LIMITATIONS, AND KNOWN PROBLEMS)
لطفاً فایل NEWS همراه با fetchmail را برای باگهای شناختهشده بیشتر بررسی کنید.
برنامه fetchmail نامهای کاربری حاوی فاصله بعد از نویسه "@" را نمیپذیرد.
تنظیماتی که در آنها چندین حساب از نام سرور و نام کاربری یکسان استفاده میکنند پشتیبانی نمیشوند؛ ترکیب user@server باید یکتا باشد.
گزینههای mda و plugin ممکن است به دلیل تجمع فرایندهای زامبی با هم تداخل داشته باشند.
گزینه --interface از IPv6 پشتیبانی نمیکند.
پارسر آدرس RFC822 در حالت چندمقصده ممکن است با آدرسهای نامتعارف دچار سردرگمی شود.
ارسال گذرواژههای متنی بدون رمزنگاری خطر شنود در شبکه را به همراه دارد؛ استفاده از تونلهای ssh(1) یا SSL/TLS توصیه میشود.
استفاده از %F یا %T در دستور MDA به دلیل عبور دادن متن از شل میتواند مخاطره امنیتی ایجاد کند.
روشهای ارسال پیامهای برگشتی fetchmail نیازمند باز بودن درگاه ۲۵ در localhost هستند.
گذرواژههایی که به صورت تعاملی وارد میشوند پس از ۶۳ کاراکتر کوتاه میشوند.
ارسال نظرات، گزارشهای باگ و پیشنهادات به لیست پستی: fetchmail-devel list
پرسشهای متداول FAQ در قالب HTML در وبسایت در دسترس است: fetchmail FAQ.
نویسندگان (AUTHORS)
برنامه Fetchmail در حال حاضر توسط Matthias Andree و Rob Funk با کمک اساسی Sunil Shetye (در بخش کد) و Rob MacGregor (در لیستهای پستی) نگهداری میشود.
بخش اعظم کد اولیه توسط: Eric S. Raymond نوشته شده است. افراد بسیار دیگری نیز در ارائه کد و وصلهها مشارکت داشتهاند.
این برنامه بر پایه و جایگزین برنامه popclient اثر: Carl Harris است.
این صفحه راهنما توسط Matthias Andree، R. Hannes Beinert و Hector Garcia بهبود یافته است.
همچنین ببینید (SEE ALSO)
README, README.SSL, README.SSL-SERVER, The Fetchmail FAQ, mutt(1), elm(1), mail(1), sendmail(8), popd(8), imapd(8), netrc(5), وبسایت اصلی fetchmail, (نشانی جایگزین وبسایت); وبسایت پروژه maildrop
استانداردهای مرتبط (APPLICABLE STANDARDS)
این فهرست تنها مجموعهای از مراجع است و به معنای انطباق کامل fetchmail با آنها نیست:
- SMTP/ESMTP:
- RFC 821, RFC 2821, RFC 1869, RFC 1652, RFC 1870, RFC 1983, RFC 1985, RFC 2554.
- mail:
- RFC 822, RFC 2822, RFC 1123, RFC 1892, RFC 1894.
- POP2:
- RFC 937
- POP3:
- RFC 1081, RFC 1225, RFC 1460, RFC 1725, RFC 1734, RFC 1939, RFC 1957, RFC 2195, RFC 2449.
- APOP:
- RFC 1939.
- RPOP:
- RFC 1081, RFC 1225.
- IMAP2/IMAP2BIS:
- RFC 1176, RFC 1732.
- IMAP4/IMAP4rev1:
- RFC 1730, RFC 1731, RFC 1732, RFC 2060, RFC 2061, RFC 2195, RFC 2177, RFC 2683.
- ETRN:
- RFC 1985.
- ODMR/ATRN:
- RFC 2645.
- OTP:
- RFC 1938.
- LMTP:
- RFC 2033.
- GSSAPI:
- RFC 1508, RFC 1734, Generic Security Service Application Program Interface (GSSAPI) Service Names.
- TLS:
- RFC 2595.
| 2025-10-10 | fetchmail 6.6.7 |