mbox(5) User Manuals mbox(5)

mbox_neomutt - قالب فایل صندوق پستی mbox در NeoMutt

این سند قالبی را شرح می‌دهد که به طور سنتی توسط میزبان‌های یونیکس برای ذخیره‌سازی محلی پیام‌های ایمیل استفاده می‌شود. فایل‌های mbox معمولاً در مسیر نگهداری موقت ایمیل‌های سیستم (spool)، با نام‌های مختلف در پوشه‌های Mail کاربران، و با نام mbox در دایرکتوری‌های خانگی کاربران قرار دارند.

یک mbox یک فایل متنی شامل تعداد دلخواهی از پیام‌های رایانامه (ایمیل) است. هر پیام از یک مهر پستی (postmark) تشکیل شده که پس از آن پیام ایمیل با قالب‌بندی مطابق با RFC822 و RFC2822 قرار می‌گیرد. قالب فایل خط‌محور است. خطوط با نویسه‌های تغییر خط (ASCII 10) از یکدیگر جدا می‌شوند.

یک خط مهر پستی شامل چهار نویسه «From» است که به دنبال آن یک نویسه فاصله، سپس نشانی فرستنده پاکت (envelope) پیام، یک فاصله سفید و در نهایت یک مهر زمانی می‌آید. این خط معمولاً خط From_ نامیده می‌شود.

انتظار می‌رود نشانی فرستنده از نوع addr-spec همان‌طور که در بخش 3.4.1 از RFC2822 تعریف شده باشد. تاریخ باید از نوع date-time به صورتی که توسط asctime(3) خروجی داده می‌شود باشد. به دلایل سازگاری با نرم‌افزارهای قدیمی، سال‌های دو رقمی بزرگ‌تر یا مساوی ۷۰ باید به عنوان سال‌های ۱۹۷۰ به بعد تفسیر شوند، در حالی که سال‌های دو رقمی کمتر از ۷۰ باید به عنوان سال‌های ۲۰۰۰ تا ۲۰۶۹ تعبیر گردند. نرم‌افزاری که فایل‌ها را در این قالب می‌خواند باید برای پذیرش اطلاعات منطقه زمانی غیرعددی مانند «CET DST» برای ساعت تابستانی اروپای مرکزی نیز آماده باشد.

مثال:

>From example@example.com Fri Jun 23 02:56:55 2000

برای جلوگیری از تفسیر نادرست خطوط در بدنه پیام که با چهار نویسه «From» به همراه یک نویسه فاصله آغاز می‌شوند، عامل تحویل ایمیل (MDA) باید هر بار رخ دادن «From » در ابتدای خط بدنه را نقل‌قول کند.

دو طرح مختلف برای نقل‌قول وجود دارد؛ اولی (MBOXO) تنها خطوط معمولی «From » در بدنه را با افزودن «>» به ابتدای خط نقل‌قول می‌کند؛ دومی (MBOXRD) خطوطی را که از پیش نقل‌قول شده‌اند نیز با افزودن یک «>» نقل‌قول می‌کند (یعنی «>From »، «>>From » و...). دومی این مزیت را دارد که خطوطی مانند

>From the command line you can use the '-p' option

به اشتباه نقل‌قول‌زدایی نمی‌شوند، زیرا یک MBOXRD-MDA این خط را پیش از ذخیره کردن به شکل زیر تبدیل می‌کند:

>>From the command line you can use the '-p' option

علاوه بر MBOXO و MBOXRD، قالب MBOXCL نیز وجود دارد که همان MBOXO همراه با فیلد «Content-Length:» است که تعداد بایت‌های بدنه پیام را مشخص می‌کند؛ برخی MUAها (مانند neomutt(1)) هنگام بازنویسی صندوق‌های پستی، به طور خودکار صندوق‌های MBOXO را به MBOXCL تبدیل می‌کنند، چرا که MBOXCL می‌تواند توسط هر MBOXO-MUA بدون هیچ مشکلی خوانده شود.

اگر زمان تغییر (که معمولاً از طریق stat(2) تعیین می‌شود) یک فایل mbox غیرخالی از زمان دسترسی به آن بیشتر باشد، فایل حاوی ایمیل جدید است. بسیاری از MUAها یک سرآیند Status: در هر پیام قرار می‌دهند تا مشخص کنند کدام پیام‌ها قبلاً خوانده شده‌اند.

از آنجا که فایل‌های mbox معمولاً توسط چندین برنامه به صورت همزمان مورد دسترسی قرار می‌گیرند، دسترسی به فایل‌های mbox عموماً نباید بدون قفل‌گذاری صورت پذیرد.

سه سازوکار قفل‌گذاری مختلف (و ترکیب‌هایی از آن‌ها) به صورت عمومی مورد استفاده قرار می‌گیرند:

  • قفل‌گذاری fcntl(2) بیشتر در سیستم‌های جدیدتر و منطبق بر استاندارد POSIX استفاده می‌شود. استفاده از این روش قفل‌گذاری به ویژه زمانی که فایل‌های mbox از طریق سیستم فایل شبکه‌ای (NFS) مورد دسترسی قرار می‌گیرند توصیه می‌شود، زیرا ظاهراً تنها روش مطمئن برای باطل‌سازی حافظه موقت کلاینت‌های NFS است.
  • قفل‌گذاری flock(2) بیشتر در سیستم‌های مبتنی بر BSD استفاده می‌شود.

اگر چندین روش ترکیب شوند، پیاده‌سازان باید اطمینان حاصل کنند که از حالت‌های غیرمسدودکننده (non-blocking) فراخوان‌های سیستمی fcntl(2) و flock(2) استفاده کنند تا از بن‌بست (deadlock) جلوگیری شود.

اگر چندین روش ترکیب شوند، یک فایل mbox نباید پیش از به دست آمدن تمامی قفل‌های مجزا، با موفقیت قفل‌شده در نظر گرفته شود. هنگامی که یکی از روش‌های قفل‌گذاری مجزا با شکست مواجه می‌شود، برنامه باید تمام قفل‌هایی را که با موفقیت کسب کرده است آزاد کند و پس از یک تاخیر مناسب، کل فرآیند قفل‌گذاری را از ابتدا آغاز نماید.

سازوکار قفل‌گذاری مورد استفاده در یک سیستم خاص، تابع خط‌مشی محلی است و باید به طور یکنواخت توسط تمام برنامه‌های نصب‌شده روی سیستم که به فایل‌های mbox دسترسی دارند استفاده شود. عدم رعایت این موضوع ممکن است منجر به از دست رفتن داده‌های ایمیل و خراب شدن فایل‌های mbox گردد.

/var/spool/mail/$LOGNAME

پوشه ایمیل‌های ورودی $LOGNAME.

$HOME/mbox

پیام‌های ایمیل بایگانی‌شده کاربر، در دایرکتوری $HOME او.

$HOME/Mail/

پوشه‌ای در دایرکتوری $HOME کاربر که معمولاً برای نگهداری پوشه‌های با قالب mbox استفاده می‌شود.

neomutt(1), fcntl(2), flock(2), link(2), stat(2), asctime(3), maildir(5), mmdf(5), RFC822, RFC976, RFC2822

Thomas Roessler <roessler@does-not-exist.org>, Urs Janssen <urs@tin.org>

قالب mbox نخستین بار در نسخه ۶ یونیکس AT&T ظاهر شد.
گونه‌ای از این قالب در RFC976 مستند شده است.

2002-02-19 Unix