.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "IMAPSYNC 1" .TH IMAPSYNC 1 2025-09-28 "perl v5.42.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" imapsync \- ابزار همگام‌سازی یک‌طرفه و بدون تکرار میان دو حساب کاربری IMAP .SH "نسخه (VERSION)" .IX Header "VERSION" این مستندات مربوط به Imapsync \f(CW$Revision:\fR 2.314 $ است. .SH "نحوه استفاده (USAGE)" .IX Header "USAGE" .Vb 5 \& برای همگام‌سازی حساب کاربری مبدأ IMAP \& "test1" بر روی سرور "test1.lamiral.info" با گذرواژه "secret1" \& به حساب کاربری مقصد IMAP \& "test2" بر روی سرور "test2.lamiral.info" با گذرواژه "secret2" \& دستور زیر را اجرا کنید: \& \& imapsync \e \& \-\host1 test1.lamiral.info \-\user1 test1 \-\password1 secret1 \e \& \-\host2 test2.lamiral.info \-\user2 test2 \-\password2 secret2 .Ve .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" گاهی اوقات نیاز داریم صندوق‌های پستی (mailboxes) را از یک سرور IMAP به سرور دیگر منتقل کنیم. .PP دستور imapsync ابزاری است که امکان انتقال افزایشی (incremental) و بازگشتی (recursive) را از یک صندوق پستی به صندوق دیگر فراهم می‌کند. اگر جمله قبلی را متوجه نشدید، کاملاً طبیعی است؛ این یک اصطلاح تخصصی رایانه‌ای است. .PP تمام پوشه‌ها به صورت بازگشتی منتقل می‌شوند؛ بدین معنا که کل سلسله‌مراتب پوشه‌ها شامل تمام زیرپوشه‌ها، تمام پیام‌های درون آن‌ها و تمام پرچم‌های پیام‌ها (\eSeen، \eAnswered، \eFlagged و غیره) همگام‌سازی خواهند شد. .PP ابزار imapsync با عدم انتقال پیامی که از قبل در سمت مقصد وجود دارد، حجم داده‌های منتقل‌شده را کاهش می‌دهد. پیام‌هایی که در سمت مقصد هستند اما در سمت مبدأ وجود ندارند، دست‌نخورده باقی می‌مانند. به طور پیش‌فرض هیچ حذفی انجام نمی‌شود. برای همگام‌سازی دقیق و حذف آن‌ها، گزینه \-\delete2 را ببینید. .PP چگونه imapsync تشخیص می‌دهد که یک پیام از قبل در هر دو طرف وجود دارد؟ از روی سرآیندهای (headers) خاص یکسان، و انتقال فقط یک بار انجام می‌شود. به طور پیش‌فرض، سرآیندهای شناسایی خطوط "Message\-Id:" و "Received:" هستند. این انتخاب را می‌توان با گزینه \-\useheader تغییر داد. در بیشتر موارد، مشکل پیام‌های تکراری با استفاده از \-\useheader "Message\-Id" حل می‌شود. .PP تمامی پرچم‌ها حفظ می‌شوند؛ پیام‌های خوانده‌نشده خوانده‌نشده می‌مانند، پیام‌های خوانده‌شده خوانده‌شده می‌مانند و پیام‌های حذف‌شده حذف‌شده باقی می‌مانند. .PP پرچم‌ها همچنین در هر بار اجرا مجدداً همگام‌سازی می‌شوند، مگر اینکه از گزینه \-\noresyncflags استفاده شود. .PP نکته‌ای درباره حذف پیام‌ها: در پروتکل IMAP، یک پیام حذف‌شده بلافاصله نابود نمی‌شود؛ بلکه با پرچم \eDeleted علامت‌گذاری می‌شود و قابلیت بازیابی دارد. نابودی و حذف واقعی پیام‌ها با دستورات IMAP به نام EXPUNGE یا UIDEXPUNGE رخ می‌دهد. .PP شما می‌توانید فرایند انتقال را در هر زمان متوقف کرده و بعداً آن را دوباره اجرا کنید. ابزار imapsync بر اساس طراحی خود به خوبی با اتصالات ضعیف و قطعی‌ها سازگار است. در ترمینال، فشردن دو بار کلیدهای Ctrl\-c در عرض دو ثانیه برنامه را لغو می‌کند. فشردن Ctrl\-c فقط برای یک بار باعث می‌شود imapsync مجدداً به هر دو سرور IMAP متصل شود. .PP چگونه متوجه شویم همگام‌سازی تمام شده و به درستی انجام گرفته است؟ هنگامی که imapsync خودبه‌خود به پایان می‌رسد، با خطوطی مشابه خطوط زیر این موضوع را اعلام می‌کند: .PP .Vb 3 \& Exiting with return value 0 (EX_OK: successful termination) 0/50 nb_errors/max_errors PID 20332 \& Removing pidfile /home/gilles/tmp/imapsync.pid \& Log file is LOG_imapsync/2023_08_21_11_51_27_651_test1_test2.txt ( to change it, use \-\logfile filepath ; or use \-\nolog to turn off logging ) .Ve .PP اگر این خطوط را مشاهده نکردید، بدان معناست که یا فرایند همگام‌سازی همچنان در حال اجراست (یا احتمالاً برای مدتی نامحدود معلق مانده است)، یا اینکه بدون هیچ پیامی متوقف شده است (مثلاً بر اثر دستور قوی kill \-9 در لینوکس). .PP اگر این خطوط پایانی را دیدید، بدین معناست که فرایند همگام‌سازی به طور صحیح خاتمه یافته است. با این حال ممکن است با خطاهایی مواجه شده باشد. .PP یک همگام‌سازی موفق با خطوطی بالای خطوط پایانی اعلام می‌شود، به ویژه این سه خط: .PP .Vb 3 \& The sync looks good, all 1745 identified messages in host1 are on host2. \& There is no unidentified message on host1. \& Detected 0 errors .Ve .PP ابزار imapsync مجموع اندازه هر دو حساب کاربری را در ابتدای همگام‌سازی و همچنین در انتهای آن اعلام می‌کند. گاهی اوقات حتی با یک همگام‌سازی دقیق، این اندازه‌های کل با یکدیگر تفاوت دارند و گاهی این اختلاف بسیار زیاد است. این تفاوت معیار مناسبی برای نتیجه‌گیری مبنی بر اشتباه انجام شدن همگام‌سازی نیست. .PP چرا؟ زیرا اندازه‌های پیامی که سرورهای IMAP اعلام می‌کنند همیشه دقیق نیستند؛ آن‌ها همیشه با اندازه واقعی پیام‌های منتقل‌شده توسط imapsync یکسان نیستند. ابزار imapsync از اندازه‌های اعلام‌شده توسط سرورهای IMAP برای محاسبه اندازه کل استفاده می‌کند و این مقادیر می‌توانند متفاوت باشند. در نسخه‌های اولیه، imapsync از اندازه پیام‌ها به عنوان یکی از معیارهای شناسایی پیام‌ها استفاده می‌کرد؛ یعنی اندازه متفاوت نشان‌دهنده پیام متفاوت بود. اما این یک اشتباه بود، چرا که بسته به سرورهای IMAP، یک پیام یکسان گاهی در دو طرف اندازه‌های متفاوتی داشت. .PP توضیح دیگر برای اختلاف بزرگ در اندازه کل این است که Gmail اندازه پیام‌های تکراری در میان چند پوشه را دو بار محاسبه نمی‌کند، در حالی که imapsync این کار را انجام می‌دهد. .PP یک سناریوی کلاسیک، همگام‌سازی صندوق پستی B از روی صندوق پستی A است که در آن می‌خواهید یک کپی دقیق از A در B نگهداری شود. دقیق به این معنی است که تمام پیام‌های موجود در A در B خواهند بود و چیزی بیش از آن وجود نخواهد داشت. .PP برای یک همگام‌سازی دقیق، از گزینه \-\delete2 استفاده کنید. گزینه \-\delete2 پیام‌های موجود در پوشه B در host2 را که در پوشه A در host1 وجود ندارند حذف می‌کند. اگر همچنین نیاز دارید پوشه‌های host2 را که در host1 نیستند حذف کنید، از \-\delete2folders استفاده کنید. همچنین گزینه‌های \-\delete2foldersonly و \-\delete2foldersbutnot را برای تعیین استثناها در پوشه‌های حذفی ببینید. پوشه INBOX هرگز حذف نخواهد شد؛ این پوشه در پروتکل IMAP اجباری است، بنابراین imapsync حتی تلاشی برای حذف آن نمی‌کند. .PP یک سناریوی متفاوت، حذف پیام‌ها از صندوق پستی مبدأ پس از انتقال موفقیت‌آمیز است. این قابلیت هنگام مهاجرت صندوق‌های پستی مفید است، زیرا پیام‌ها فقط در یک سمت باقی می‌مانند. حساب کاربری مبدأ فقط پیام‌هایی را خواهد داشت که هنوز به مقصد منتقل نشده‌اند؛ یعنی پیام‌هایی که بعد از همگام‌سازی دریافت شده‌اند یا انتقال آن‌ها با شکست مواجه شده است. .PP در این حالت، از گزینه \-\delete1 استفاده کنید. گزینه \-\delete1 همچنین گزینه \-\expunge1 را به همراه دارد؛ بنابراین تمامی پیام‌هایی که در host1 به عنوان حذف‌شده علامت‌گذاری شده‌اند پاکسازی خواهند شد. در پروتکل IMAP، حذف یک پیام بلافاصله آن را نابود نمی‌کند، بلکه آن را با پرچم \eDeleted علامت‌گذاری می‌کند و اجازه بازیابی می‌دهد. پاکسازی (Expunge) یک پوشه، تمامی پیام‌های علامت‌گذاری‌شده به عنوان \eDeleted در آن پوشه را به طور قطعی حذف می‌کند. .PP شما همچنین می‌توانید تصمیم بگیرید که پوشه‌های خالی را پس از انتقال تمام پیام‌های درون آن‌ها حذف کنید. گزینه \-\delete1emptyfolders را برای اعمال این رفتار اضافه کنید. .PP ابزار imapsync برای حفظ همگام‌سازی دو حساب کاربری فعال IMAP در شرایطی که کاربر به صورت مستقل در هر دو طرف فعالیت می‌کند، مناسب نیست. برای همگام‌سازی دوطرفه از ابزارهایی مانند offlineimap (نوشته John Goerzen) یا mbsync (نوشته Michael R. Elkins) استفاده کنید. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" .Vb 1 \& usage: imapsync [options] .Ve .PP گزینه‌های استاندارد شامل شش مقدار تشکیل‌دهنده اطلاعات کاربری (credentials) هستند. سه مقدار در هر طرف برای ورود به سرورهای IMAP مورد نیاز است. این شش مقدار عبارتند از نام میزبان، نام کاربری و گذرواژه، برای هر دو سمت مبدأ و مقصد. .PP در ادامه قراردادهای مورد استفاده در توضیحات گزینه‌ها آمده است: .PP .Vb 5 \& str به معنی یک رشته متنی (string) است \& int به معنی یک عدد صحیح (integer) است \& flo به معنی یک عدد اعشاری (float) است \& reg به معنی یک عبارت منظم (regular expression) است \& cmd به معنی یک دستور (command) است \& \& \-\dry : ابزار imapsync هیچ تغییری در عمل اعمال نمی‌کند؛ فقط \& آنچه را که بدون \-\dry انجام می‌شد چاپ می‌کند. .Ve .SS "اطلاعات کاربری (OPTIONS/credentials)" .IX Subsection "OPTIONS/credentials" .Vb 2 \& \-\host1 str : سرور IMAP مبدأ یا فرستنده. \& می‌تواند نام میزبان یا نشانی IP باشد. \& \& \-\port1 int : درگاه اتصال به host1. \& اختیاری است زیرا درگاه پیش‌فرض همان درگاه شناخته‌شده \& imap/143 یا imaps/993 است. \& اگر می‌خواهید اتصال SSL/TLS روی host1 داشته باشید، \& \-\ssl1 را اضافه کنید. \& \& \-\user1 str : کاربر برای ورود به host1. \& \& \-\password1 str : گذرواژه user1. \& \& \-\host2 str : سرور IMAP مقصد یا گیرنده. \& \-\port2 int : درگاه اتصال به host2. \& اختیاری است زیرا درگاه پیش‌فرض همان درگاه شناخته‌شده \& imap/143 یا imaps/993 است. \& اگر می‌خواهید اتصال SSL/TLS روی host2 داشته باشید، \& \-\ssl2 را اضافه کنید. \& \& \-\user2 str : کاربر برای ورود به host2. \& \-\password2 str : گذرواژه user2. \& \& \-\showpasswords : گذرواژه‌ها را در خروجی به جای "MASKED" نمایش می‌دهد. \& برای راه‌اندازی مجدد با خواندن خط فرمان در گزارش \& یا برای اشکال‌زدایی گذرواژه‌ها مفید است. \& این کار اصلاً یک اقدام امن محسوب نمی‌شود! \& \& \-\passfile1 str : فایل گذرواژه برای user1. باید در خط اول حاوی \& گذرواژه باشد. این گزینه از نمایش گذرواژه در خط فرمان \& (مانند کاری که \-\password1 انجام می‌دهد) جلوگیری می‌کند. \& \-\passfile2 str : فایل گذرواژه برای user2. .Ve .PP همچنین می‌توانید گذرواژه‌ها را در متغیرهای محیطی IMAPSYNC_PASSWORD1 و IMAPSYNC_PASSWORD2 قرار دهید. اگر گذرواژه user1 را از طریق \-\password1 یا \-\passfile1 یا \f(CW$IMAPSYNC_PASSWORD1\fR مشخص نکنید، imapsync از شما می‌خواهد که گذرواژه را در ترمینال وارد کنید. همین موضوع برای گذرواژه user2 نیز صادق است. .SS "رمزنگاری (OPTIONS/encryption)" .IX Subsection "OPTIONS/encryption" .Vb 1 \& \-\nossl1 : از اتصال IMAP روی SSL/TLS برای host1 استفاده نکن. \& \& \-\ssl1 : از اتصال IMAP روی SSL/TLS برای host1 استفاده کن. \& این همان imaps است. درگاه پیش‌فرض 993 است. \& در صورت امکان، به طور پیش‌فرض استفاده می‌شود. \& \& \-\nossl2 : از اتصال IMAP روی SSL/TLS برای host2 استفاده نکن. \& \& \-\ssl2 : از اتصال IMAP روی SSL/TLS برای host2 استفاده کن. \& مشابه \-\ssl1 اما برای host2. \& \& \-\notls1 : برای اتصال SSL/TLS با "STARTTLS" روی host1 تلاش نکن. \& \& \-\tls1 : از رمزنگاری SSL/TLS از طریق "STARTTLS" روی host1 استفاده کن. \& درگاه پیش‌فرض 143 است. \& به طور پیش‌فرض پس از ناموفق بودن بررسی imaps استفاده می‌شود. \& \& \-\notls2 : از اتصال SSL/TLS با "STARTTLS" روی host2 استفاده نکن. \& \& \-\tls2 : از رمزنگاری SSL/TLS از طریق STARTTLS روی host2 استفاده کن. \& مشابه \-\tls1 اما برای host2. \& \& \-\debugssl int : حالت اشکال‌زدایی SSL/TLS از 0 تا 4. \& \& \-\sslargs1 str : ارسال هرگونه پارامتر SSL/TLS برای اتصال host1. \& مثال: \& \-\sslargs1 SSL_verify_mode=1 \-\sslargs1 SSL_version=TLSv1_3 \& مشاهده گزینه‌ها در متد new() ماژول IO::Socket::SSL: \& http://search.cpan.org/perldoc?IO::Socket::SSL#Description_Of_Methods \& \& \-\sslargs2 str : ارسال هرگونه پارامتر SSL/TLS برای اتصال host2. \& مشابه \-\sslargs1 اما برای host2. .Ve .SS "احراز هویت (OPTIONS/authentication)" .IX Subsection "OPTIONS/authentication" .Vb 3 \& \-\authmech1 str : سازوکار احراز هویت برای host1: \& مانند PLAIN، LOGIN، CRAM\-MD5 و غیره (با حروف بزرگ). \& \-\authmech2 str : سازوکار احراز هویت برای host2 (مشابه \-\authmech1). \& \& \-\authuser1 str : کاربر برای احراز هویت در host1 (کاربر مدیر). \& از ترکیب \-\authmech1 SOMETHING با \-\authuser1 خودداری کنید. \& \-\authuser2 str : کاربر برای احراز هویت در host2 (کاربر مدیر). \& \-\proxyauth1 : استفاده از proxyauth در host1. نیازمند \-\authuser1 است. \& توسط سرورهای Sun/iPlanet/Netscape برای استفاده از کاربر \& مدیر الزامی است. \& \-\proxyauth2 : استفاده از proxyauth در host2. نیازمند \-\authuser2 است. \& \& \-\authmd51 : استفاده از احراز هویت MD5 برای host1. \& \-\authmd52 : استفاده از احراز هویت MD5 برای host2. \& \-\domain1 str : دامنه در host1 (احراز هویت NTLM). \& \-\domain2 str : دامنه در host2 (احراز هویت NTLM). \& \& \-\oauthaccesstoken1 str : توکن دسترسی برای احراز هویت با OAUTH2 در host1. \& با مقدار \-\user1 ترکیب شده تا رشته احراز هویت \& XOAUTH2 را بسازد. به جای توکن دسترسی، می‌توان فایلی \& که خط اول آن حاوی توکن است را مشخص کرد. مزیت فایل این است \& که در صورت تغییر توکن، هنگام اتصال مجدد بازخوانی می‌شود. \& \& \-\oauthaccesstoken2 str : مشابه \-\oauthaccesstoken1 اما برای host2. \& \& \-\oauthdirect1 str : رشته مستقیم برای احراز هویت XOAUTH2 در host1. \& \& \-\oauthdirect2 str : مشابه \-\oauthdirect1 اما برای host2. \& \& \-\oauthrefreshcmd1 str : دستور اختیاری برای تازه‌سازی توکن host1 قبل از احراز هویت oauth. \& می‌تواند دارای آرگومان‌هایی مانند "cmd arg1 arg2 ..." باشد. \& \& \-\oauthrefreshcmd2 str : مشابه \-\oauthrefreshcmd1 اما برای host2. .Ve .SS "پوشه‌ها (OPTIONS/folders)" .IX Subsection "OPTIONS/folders" .Vb 4 \& \-\folder str : همگام‌سازی این پوشه. \& \-\folder str : و این پوشه، و غیره. \& \-\folderrec str : همگام‌سازی این پوشه و تمام زیرپوشه‌های آن. \& \-\folderrec str : و این یکی، و غیره. \& \& \-\folderfirst str : این پوشه را ابتدا همگام‌سازی کن. مثال: \-\folderfirst "INBOX" \& \-\folderfirst str : سپس این یکی، و غیره. \& \-\folderlast str : این پوشه را در آخر همگام‌سازی کن. \-\folderlast "[Gmail]/All Mail" \& \-\folderlast str : سپس این یکی، و غیره. \& \& \-\nomixfolders : ادغام نکردن پوشه‌ها هنگامی که host1 به حروف کوچک و بزرگ \& حساس است اما host2 حساس نیست (مانند Exchange). تنها \& اولین پوشه مشابه همگام‌سازی می‌شود. مثال: با پوشه‌های \& "Sent"، "SENT" و "sent" در host1، تنها "Sent" در host2 \& همگام‌سازی می‌شود. \& \& \-\skipemptyfolders : پوشه‌های خالی host1 در host2 ایجاد نمی‌شوند. \& \& \-\include reg : همگام‌سازی پوشه‌هایی که با این عبارت منظم تطابق دارند. \& \-\include reg : یا این یکی، و غیره. \& اگر هر دو گزینه \-\include و \-\exclude استفاده شوند، \& ابتدا include اعمال می‌شود. \& \-\exclude reg : نادیده گرفتن پوشه‌های منطبق بر این عبارت منظم. \& برای چند پوشه: \-\exclude \*(Aqfold1|fold2|f3\*(Aq پوشه‌های \& fold1 و fold2 و f3 را نادیده می‌گیرد. \& \-\exclude reg : یا این یکی، و غیره. \& \& \-\automap : نگاشت خودکار پوشه‌های معروفی چون "Sent"، "Junk"، \& "Drafts"، "All"، "Archive"، "Flagged". \& \& \-\f1f2 str1=str2 : اجبار به همگام‌سازی پوشه str1 به str2. \& گزینه \-\f1f2 اولویت بالاتری نسبت به \-\automap و \-\regextrans2 دارد. \& از چند گزینه \-\f1f2 برای چند پوشه استفاده کنید. \& این یک نگاشت یک‌به‌یک است و str1 و str2 باید مسیرهای کامل باشند. \& برای نگاشت‌های عمومی‌تر از \-\regextrans2 استفاده کنید. \& \& \-\subfolder2 str : همگام‌سازی کل سلسله‌مراتب پوشه‌های host1 در زیر پوشه‌ای \& از host2 به نام str. \& این کار را داخلی با افزودن سه گزینه \-\regextrans2 انجام می‌دهد. \& برای مشاهده جزئیات \-\debug را اضافه کنید. \& \& \-\subfolder1 str : همگام‌سازی سلسله‌مراتب پوشه‌های host1 که زیر پوشه str قرار دارد \& به ریشه سلسله‌مراتب host2. \& نقطه مقابل \-\subfolder2 در حالت معکوس است. \& سناریوی پشتیبان‌گیری/بازیابی: \& استفاده از \-\subfolder2 str برای پشتیبان در پوشه str در host2. \& سپس استفاده از \-\subfolder1 str برای بازیابی از پوشه str \& پس از معکوس کردن مقادیر host1/host2 و user1/user2. \& \& \-\subscribed : انتقال پوشه‌های اشتراک‌گرفته‌شده (subscribed). \& \-\subscribe : مشترک شدن در پوشه‌های منتقل‌شده روی host2 که در host1 \& مشترک بودند. به طور پیش‌فرض فعال است. \& \-\subscribeall : مشترک شدن در پوشه‌های منتقل‌شده روی host2 حتی اگر در \& host1 مشترک نبودند. \& \& \-\prefix1 str : حذف پیشوند str از تمام پوشه‌های مقصد، معمولاً "INBOX." \& یا "INBOX/" یا یک رشته خالی "". اگر سرور host1 فاقد \& قابلیت NAMESPACE باشد، imapsync پیشوند را حدس می‌زند. \& بنابراین بیشتر اوقات نیازی به استفاده از این گزینه نیست. \& \-\prefix2 str : افزودن پیشوند به تمام پوشه‌های host2 (مشابه \-\prefix1). \& \& \-\sep1 str : جداکننده host1. بیشتر اوقات نیازی به استفاده ندارد. \& ابزار imapsync جداکننده را از خود سرور با NAMESPACE می‌گیرد، \& یا آن را از فهرست پوشه‌ها حدس می‌زند (با شمارش / . \e\e \e). \& \-\sep2 str : جداکننده host2 (مشابه \-\sep1). \& \& \-\regextrans2 reg : اعمال عبارت منظم به هر پوشه مقصد. \& \-\regextrans2 reg : و این یکی، و غیره. \& هنگام استفاده ابتدا با گزینه‌های ایمن \-\dry \-\justfolders آزمایش کنید. \& سپس \-\dry را حذف کرده و در ادامه \-\justfolders را حذف کنید. \& این تبدیل پس از پیشوند و جداکننده خودکار اعمال می‌شود. \& برای مثال‌ها نشانی زیر را ببینید: \& https://imapsync.lamiral.info/FAQ.d/FAQ.Folders_Mapping.txt .Ve .SS "اندازه پوشه‌ها (OPTIONS/folders sizes)" .IX Subsection "OPTIONS/folders sizes" .Vb 7 \& \-\nofoldersizes : عدم محاسبه اندازه هر پوشه در ابتدای همگام‌سازی. \& رفتار پیش‌فرض آن‌ها را محاسبه می‌کند. \& \-\nofoldersizesatend: عدم محاسبه اندازه هر پوشه در انتهای همگام‌سازی. \& رفتار پیش‌فرض آن‌ها را محاسبه می‌کند. \& \-\justfoldersizes : خروج از برنامه پس از چاپ اندازه‌های اولیه پوشه‌ها. .Ve .SS "پوشه موقت (OPTIONS/tmp)" .IX Subsection "OPTIONS/tmp" .Vb 6 \& \-\tmpdir str : محل ذخیره فایل‌ها و زیردایرکتوری‌های موقت. \& اگر وجود نداشته باشد ایجاد می‌شود. پیش‌فرض HOME/tmp$ است. \& در نسخه‌های قبل از 2.250 در یونیکس tmp/ بود، اما به دلایل امنیتی \& تغییر یافت (مشاهده مسأله ۳۹۹ گیت‌هاب و CVE-2023-34204): \& https://github.com/imapsync/imapsync/issues/399 \& https://cve.mitre.org/cgi\-bin/cvename.cgi?name=CVE\-2023\-34204 \& \& \-\pidfile str : فایلی که شناسه فرایند (PID) برنامه در آن نوشته می‌شود. \& می‌تواند به صورت مسیر کامل باشد. \& نام پیش‌فرض imapsync.pid در پوشه tmpdir است. \& \& \-\pidfilelocking : اگر pidfile از قبل وجود داشت متوقف شو. برای جلوگیری از \& انتقال‌های همزمان روی یک صندوق پستی مفید است. .Ve .SS "ثبت گزارش (OPTIONS/log)" .IX Subsection "OPTIONS/log" .Vb 4 \& \-\nolog : غیرفعال کردن ثبت گزارش در فایل (به طور پیش‌فرض در داکر). \& \-\log : فعال کردن ثبت گزارش در فایل (پیش‌فرض در حالت عادی و CGI). \& \-\logfile str : تغییر نام پیش‌فرض فایل گزارش (می‌تواند مسیر کامل باشد). \& \-\logdir str : تغییر دایرکتوری پیش‌فرض گزارش‌ها. پیش‌فرض LOG_imapsync/ است. .Ve .PP نام پیش‌فرض فایل گزارش برای نمونه به صورت زیر است: .PP .Vb 1 \& LOG_imapsync/2019_12_22_23_57_59_532_user1_user2.txt .Ve .PP که در آن: .PP .Vb 3 \& 2019_12_22_23_57_59_532 تقریباً تاریخ شروع به فرمت زیر است: \& YYYY_MM_DD_HH_MM_SS_mmm به معنی: \& سال_ماه_روز_ساعت_دقیقه_ثانیه_میلی‌ثانیه .Ve .PP و user1 و user2 مقادیر گزینه‌های \-\user1 و \-\user2 هستند. .SS "پیام‌ها (OPTIONS/messages)" .IX Subsection "OPTIONS/messages" .Vb 4 \& \-\skipmess reg : نادیده گرفتن پیام‌های منطبق بر عبارت منظم. \& مثال: \*(Aqm/[\ex80\-\exff]/\*(Aq برای جلوگیری از پیام‌های ۸ بیتی. \& گزینه \-\skipmess قبل از \-\regexmess اعمال می‌شود. \& \-\skipmess reg : یا این یکی، و غیره. \& \& \-\skipcrossduplicates : عدم کپی پیام‌هایی که قبلاً در پوشه دیگری کپی شده‌اند. \& مناسب برای انتقال از Gmail به سرویس دیگر وقتی سرویس دیگر Gmail نیست. \& با \-\gmail1 به طور خودکار فعال می‌شود مگر اینکه \-\noskipcrossduplicates داده شود. \& \& \-\debugcrossduplicates : چاپ پیام‌هایی (شناسه‌های UID) که با \-\skipcrossduplicates \& نادیده گرفته شده‌اند و اینکه در چه پوشه‌های دیگری هستند. \& \& \-\pipemess cmd : اعمال این دستور cmd بر روی محتوای هر پیام پیش از کپی. \& \-\pipemess cmd : و این یکی، و غیره. \& با چند گزینه \-\pipemess، خروجی استاندارد (STDOUT) هر دستور به \& ورودی استاندارد (STDIN) دستور بعدی ارسال می‌شود. \& مانند پایپ در یونیکس: \& "cat message | cmd1 | cmd2 | cmd3" \& \& \-\disarmreadreceipts : غیرفعال کردن رسیدهای خواندن پیام (برای حل مشکل Exchange در host2). \& \& \-\regexmess reg : اعمال عبارت منظم به هر پیام پیش از انتقال. \& مثال: \*(Aqs/\e000/ /g\*(Aq برای جایگزینی نویسه‌های null با فاصله. \& \-\regexmess reg : و این یکی، و غیره. \& \& \-\truncmess int : کوتاه کردن پیام‌ها هنگامی که اندازه آن‌ها از مقدار int بایت \& فراتر می‌رود. مناسب برای انتقال پیام‌های خیلی بزرگ یا حذف پیوست‌ها. \& توجه داشته باشید که این کار پیام‌ها را تا حدی نامعتبر می‌کند. \& \& \-\nodry1 : دریافت پیام‌ها از host1 توسط imapsync حتی زمانی که \-\dry فعال است. \& ترکیب \-\dry \-\nodry1 برای اشکال‌زدایی گزینه‌های تبدیل مانند \& \-\pipemess یا \-\regexmess مفید است. .Ve .SS "برچسب‌ها (OPTIONS/labels)" .IX Subsection "OPTIONS/labels" سرویس Gmail برچسب‌ها را به عنوان پوشه در IMAP نمایش می‌دهد. ابزار imapsync می‌تواند با همگام‌سازی X\-GM\-LABELS سرعت کار را افزایش دهد؛ این کار از انتقال مجدد پیام‌هایی که از قبل در پوشه دیگری روی host2 هستند جلوگیری می‌کند. .PP .Vb 3 \& \-\synclabels : همگام‌سازی برچسب‌های Gmail هنگام کپی پیام به host2. \& به طور پیش‌فرض با \-\gmail1 \-\gmail2 فعال است مگر اینکه \& \-\nosynclabels اضافه شود. \& \& \-\resynclabels : همگام‌سازی مجدد برچسب‌های Gmail زمانی که پیام از قبل در host2 است. \& به طور پیش‌فرض با \-\gmail1 \-\gmail2 فعال است مگر اینکه \& \-\noresynclabels اضافه شود. .Ve .PP برای همگام‌سازی Gmail همچنین نشانی زیر را ببینید: https://imapsync.lamiral.info/FAQ.d/FAQ.Gmail.txt .SS "پرچم‌ها (OPTIONS/flags)" .IX Subsection "OPTIONS/flags" .Vb 2 \& در صورت مواجهه با مشکلات پرچم‌ها، این نشانی را ببینید: \& https://imapsync.lamiral.info/FAQ.d/FAQ.Flags.txt \& \& \-\regexflag reg : اعمال عبارت منظم به فهرست پرچم‌ها. \& مثال: \*(Aqs/"Junk"//g\*(Aq برای حذف پرچم "Junk". \& \-\regexflag reg : سپس این یکی، و غیره. \& \& \-\resyncflags : همگام‌سازی مجدد پرچم‌ها برای پیام‌های از قبل منتقل‌شده. \& به طور پیش‌فرض فعال است. \& \-\noresyncflags : عدم همگام‌سازی مجدد پرچم‌ها برای پیام‌های از قبل منتقل‌شده. \& زمانی که کاربر کار با حساب host2 را آغاز کرده مفید است. \& \& \-\filterbuggyflags : فیلتر کردن پرچم‌های معیوب که باعث خطاهای \& "BAD Invalid system flag" یا "NO APPEND Invalid flag list" می‌شوند. .Ve .SS "حذف‌ها (OPTIONS/deletions)" .IX Subsection "OPTIONS/deletions" .Vb 9 \& \-\delete1 : حذف پیام‌ها روی سرور host1 پس از انتقال موفق. \& این گزینه پیام‌ها را با پرچم IMAP موسوم به \eDeleted علامت می‌زند \& و سپس با دستور EXPUNGE حذف می‌شوند. اگر پاکسازی بعد از هر پیام \& سرعت را کاهش می‌دهد، از \-\noexpungeaftereach برای افزایش سرعت استفاده \& کنید تا پاکسازی فقط دو بار در هر پوشه انجام شود. \& \& \-\expunge1 : پاکسازی (expunge) پیام‌ها در host1 دقیقاً قبل از همگام‌سازی پوشه. \& پاکسازی به ازای هر پوشه انجام می‌شود و هدف آن حذف قطعی پیام‌های \& علامت‌گذاری‌شده با \eDeleted است. \& در صورت تنظیم \-\delete1 نیز پاکسازی بعد از هر پیام انجام می‌شود. \& \& \-\noexpunge1 : پیام‌ها در host1 پاکسازی نشوند. \& \& \-\delete1emptyfolders : حذف پوشه‌های خالی در host1 به جز INBOX. \& همراه با \-\delete1 بسیار کاربردی است زیرا آنچه در host1 \& باقی می‌ماند تنها پیام‌هایی هستند که انتقالشان با شکست مواجه شده است. \& \& \-\delete2 : حذف پیام‌هایی در حساب host2 که در حساب host1 وجود ندارند. \& برای پشتیبان‌گیری یا پیش‌همگام‌سازی مناسب است. \& گزینه \-\delete2 به طور ضمنی \-\uidexpunge2 را فعال می‌کند. \& \& \-\delete2duplicates : حذف پیام‌هایی در host2 که در درون خود host2 تکراری هستند. \& تنها بدون \-\useuid کار می‌کند چون تکرارها از سرآیند شناسایی می‌شوند. \& توجه: این گزینه بسیار کم‌خطرتر از \-\delete2 است چون فقط موارد تکراری را حذف می‌کند. \& \& \-\delete2folders : حذف پوشه‌هایی در host2 که در host1 وجود ندارند. \& فقط پوشه‌های انتخاب‌شده بررسی می‌شوند (تمام پوشه‌ها به طور پیش‌فرض، \& مگر اینکه با \-\exclude یا \-\include محدود شده باشند). \& برای اطمینان، ابتدا با دستور زیر به صورت ایمن اجرا کنید: \& \-\delete2folders \-\dry \-\justfolders \-\nofoldersizes \& \& \-\delete2foldersonly reg : فقط حذف پوشه‌های منطبق بر عبارت منظم reg. \& مثال: \-\delete2foldersonly "/^Junk$|^INBOX.Junk$/" \& این گزینه \-\delete2folders را فعال می‌کند. \& \& \-\delete2foldersbutnot reg : عدم حذف پوشه‌های منطبق بر عبارت منظم rex. \& مثال: \-\delete2foldersbutnot "/Tasks$|Contacts$|Foo$/" \& این گزینه \-\delete2folders را فعال می‌کند. \& \& \-\noexpunge2 : پیام‌ها در host2 پاکسازی نشوند. \& \-\nouidexpunge2 : عدم uidexpunge پیام‌هایی در host2 که در host1 وجود ندارند. .Ve .SS "تاریخ‌ها (OPTIONS/dates)" .IX Subsection "OPTIONS/dates" .Vb 2 \& در صورت مواجهه با مشکلات مربوط به تاریخ‌ها نشانی زیر را ببینید: \& https://imapsync.lamiral.info/FAQ.d/FAQ.Dates.txt \& \& \-\syncinternaldates : تنظیم تاریخ‌های داخلی در host2 برابر با host1. \& به طور پیش‌فرض فعال است. تاریخ داخلی زمانی است که \& پیام وارد سرور می‌شود (معمولاً mtime یونیکس). \& \-\idatefromheader : تنظیم تاریخ‌های داخلی در host2 برابر با تاریخ موجود \& در سرآیند "Date:". .Ve .SS "انتخاب پیام (OPTIONS/message selection)" .IX Subsection "OPTIONS/message selection" .Vb 2 \& \-\maxsize int : نادیده گرفتن پیام‌های بزرگ‌تر (یا مساوی) با int بایت. \& \-\minsize int : نادیده گرفتن پیام‌های کوچک‌تر (یا مساوی) با int بایت. \& \& \-\maxage int : نادیده گرفتن پیام‌های قدیمی‌تر از int روز. \& آمار نهایی (نادیده‌گرفته‌شده) پیام‌های قدیمی‌تر را نمی‌شمارد. \& گزینه \-\minage را نیز ببینید. \& \-\minage int : نادیده گرفتن پیام‌های جدیدتر از int روز. \& آمار نهایی پیام‌های جدیدتر را نمی‌شمارد. \& نحوه انتخاب (ناحیه + پیام‌های انتخاب‌شده هستند): \& past|\-\-\-\-\maxage+++++++++++++++>now \& past|+++++++++++++++minage\-\-\-\->now \& past|\-\-\-\-\maxage+++++minage\-\-\-\->now (اشتراک) \& past|++++minage\-\-\-\-\-\maxage++++>now (اجتماع) \& \& \-\search str : انتخاب تنها پیام‌هایی که توسط این دستور IMAP SEARCH بازگردانده می‌شوند. \& در هر دو سمت مبدأ و مقصد اعمال می‌شود. \& برای مشاهده تمام موارد قابل جستجو ببینید: \& https://imapsync.lamiral.info/FAQ.d/FAQ.Messages_Selection.txt \& \& \-\search1 str : مشابه \-\search اما فقط برای انتخاب پیام‌های host1. \& \-\search2 str : مشابه \-\search اما فقط برای انتخاب پیام‌های host2. \& بنابراین \-\search CRIT معادل \-\search1 CRIT \-\search2 CRIT است. \& \& \-\noabletosearch : استفاده از تاریخ‌های داخلی بازگردانده‌شده توسط دستور FETCH \& به جای سرآیند "Date:" برای گزینه‌های \-\minage و \-\maxage. \& تاریخ داخلی همان تاریخ ورود پیام به صندوق است. \& این گزینه معادل \-\noabletosearch1 \-\noabletosearch2 است. \& \& \-\noabletosearch1 : مشابه \-\noabletosearch اما فقط برای host1. \& \-\noabletosearch2 : مشابه \-\noabletosearch اما فقط برای host2. \& \& \-\maxlinelength int : نادیده گرفتن پیام‌هایی با طول خط بیشتر از int بایت. \& استاندارد RFC 2822 حداکثر ۱۰۰۰ بایت را تعیین می‌کند اما سرورها \& و کلاینت‌ها در دنیای واقعی فراتر می‌روند. \& \& \-\useheader str : استفاده از این سرآیند برای مقایسه پیام‌ها در دو طرف. \& مثال: "Message\-Id" یا "Received" یا "Date". \& \-\useheader str : و این یکی، و غیره. \& \& \-\syncduplicates : همگام‌سازی پیام‌های تکراری (به طور پیش‌فرض غیرفعال). \& \& \-\usecache : استفاده از حافظه موقت (کش) برای سرعت بخشیدن به دفعات بعدی (پیش‌فرض غیرفعال). \& \-\nousecache : عدم استفاده از حافظه موقت. هشدار: \-\useuid \-\nousecache در \& اجراهای چندباره پیام‌های تکراری ایجاد می‌کند. \& \& \-\useuid : استفاده از UIDها به جای سرآیندها به عنوان معیار تشخیص پیام‌ها. \& گزینه \-\usecache به طور ضمنی فعال می‌شود مگر اینکه \-\nousecache داده شود. .Ve .SS "متفرقه (OPTIONS/miscellaneous)" .IX Subsection "OPTIONS/miscellaneous" .Vb 5 \& \-\syncacls : همگام‌سازی فهرست‌های کنترل دسترسی (ACLs). \& فهرست‌های ACL در IMAP استانداردسازی نشده‌اند؛ دقت کنید زیرا یک \& کد ACL در یک طرف ممکن است معنای متفاوتی در طرف دیگر داشته باشد. \& \-\nosyncacls : عدم همگام‌سازی ACLها (پیش‌فرض). \& \& \-\addheader : هنگامی که پیامی هیچ سرآیندی برای شناسایی ندارد، این گزینه \& یک سرآیند "Message\-Id" اضافه می‌کند، مانند "Message\-Id: 12345@imapsync"، \& که در آن ۱۲۳۴۵ شناسه UID پیام در پوشه host1 است. \& برای همگام‌سازی پوشه‌های "Sent" یا "Draft" مفید است. .Ve .SS "اشکال‌زدایی (OPTIONS/debugging)" .IX Subsection "OPTIONS/debugging" .Vb 8 \& \-\debug : نمایش پیام‌های اشکال‌زدایی. \& \-\debugfolders : نمایش پیام‌های اشکال‌زدایی فقط برای بخش پوشه‌ها. \& \-\debugcontent : نمایش محتوای پیام‌های منتقل‌شده (خروجی بسیار حجیم). \& \-\debugflags : نمایش پیام‌های اشکال‌زدایی برای پرچم‌ها. \& \-\debugimap1 : نمایش پیام‌های IMAP برای host1 (بسیار پرگو). \& \-\debugimap2 : نمایش پیام‌های IMAP برای host2 (بسیار پرگو). \& \-\debugimap : نمایش پیام‌های IMAP برای host1 و host2 (دو برابر پرگو). \& \-\debugmemory : نمایش میزان مصرف حافظه پس از هر کپی. \& \& \-\errorsmax int : خروج از برنامه هنگام رسیدن به تعداد int خطا. \& پیش‌فرض ۵۰ خطا برای خروج است. \& \& \-\tests : اجرای آزمون‌های محلی عدم‌بازگشت (non-regression tests). \& کد وضعیت 0 به معنای درست بودن همه چیز است. \& \& \-\testslive : اجرای آزمون زنده با سرور test1.lamiral.info. \& برای بررسی موارد پایه مفید است و به اینترنت نیاز دارد. \& \& \-\testslive6 : اجرای آزمون زنده با سرور tests1ipv6.lamiral.info. \& برای بررسی اتصال IPv6 مفید است و به اینترنت نیاز دارد. .Ve .SS "موارد خاص (OPTIONS/specific)" .IX Subsection "OPTIONS/specific" .Vb 2 \& \-\gmail1 : تنظیم \-\host1 روی Gmail و سایر گزینه‌ها (ببینید FAQ.Gmail.txt). \& \-\gmail2 : تنظیم \-\host2 روی Gmail و سایر گزینه‌ها (ببینید FAQ.Gmail.txt). \& \& \-\office1 : تنظیم \-\host1 روی Office365 و سایر گزینه‌ها (ببینید FAQ.Office365.txt). \& \-\office2 : تنظیم \-\host2 روی Office365 و سایر گزینه‌ها (ببینید FAQ.Office365.txt). \& \& \-\exchange1 : تنظیم گزینه‌ها برای Exchange (ببینید FAQ.Exchange.txt). \& \-\exchange2 : تنظیم گزینه‌ها برای Exchange (ببینید FAQ.Exchange.txt). \& \& \-\domino1 : تنظیم گزینه‌ها برای Domino (ببینید FAQ.Domino.txt). \& \-\domino2 : تنظیم گزینه‌ها برای Domino (ببینید FAQ.Domino.txt). .Ve .SS "رفتار و عملکرد (OPTIONS/behavior)" .IX Subsection "OPTIONS/behavior" .Vb 4 \& \-\timeout1 flo : مهلت زمانی اتصال (timeout) به ثانیه برای host1. \& پیش‌فرض ۱۲۰ است و مقدار ۰ یعنی بدون محدودیت زمانی. \& \-\timeout2 flo : مهلت زمانی اتصال به ثانیه برای host2. \& پیش‌فرض ۱۲۰ است و مقدار ۰ یعنی بدون محدودیت زمانی. \& \& هشدار: در محیط CGI ممکن است سرور وب ارتباط را قطع کند \& و باعث توقف imapsync و اتصالات IMAP شود. \& مستندات INSTALL.OnlineUI.txt را بررسی کرده و واژه "Timeout" \& را برای نحوه مدیریت این مشکل جستجو کنید. \& \& \-\keepalive1 : https://metacpan.org/pod/Mail::IMAPClient#Keepalive \& برخی فایروال‌ها و تجهیزات شبکه اگر اتصال بیکار بماند آن را زودتر \& قطع می‌کنند. این گزینه SO_KEEPALIVE را روی سوکت host1 فعال می‌کند. \& به طور پیش‌فرض از نسخه 2.169 فعال است. \& از \-\nokeepalive1 برای غیرفعال‌سازی استفاده کنید. \& \& \-\keepalive2 : مشابه \-\keepalive1 اما برای host2. \& از \-\nokeepalive2 برای غیرفعال‌سازی استفاده کنید. \& \& \-\maxmessagespersecond flo : محدود کردن میانگین تعداد پیام‌های منتقل‌شده در هر ثانیه. \& \& \-\maxbytespersecond int : محدود کردن میانگین نرخ انتقال داده در هر ثانیه. \& \-\maxbytesafter int : شروع محدودیت \-\maxbytespersecond فقط پس از انتقال \& مقدار int داده. \& \& \-\maxsleep flo : خوابیدن برنامه حداکثر تا int ثانیه. \& به طور پیش‌فرض فعال است، حداکثر ۲ ثانیه، مانند \-\maxsleep 2. \& \& \-\abort : پایان دادن به اجرای قبلی که همچنان فعال است. \& از فایل pidfile برای تشخیص فرایند استفاده می‌کند. \& \& \-\exitwhenover int : توقف همگام‌سازی و خروج زمانی که مجموع بایت‌های منتقل‌شده \& به int برسد. \& \& \-\version : نمایش تنها نسخه نرم‌افزار. \& \-\noreleasecheck : عدم بررسی وجود نسخه جدید imapsync. \& \-\releasecheck : بررسی وجود نسخه جدید imapsync. \& یک درخواست HTTP GET ارسال می‌کند به: \& http://imapsync.lamiral.info/prj/imapsync/VERSION \& \& \-\emailreport1 : قرار دادن گزارش نهایی ایمیل در INBOX در host1. \& \-\emailreport2 : قرار دادن گزارش نهایی ایمیل در INBOX در host2. \& \& \-\noemailreport1 : عدم قرار دادن گزارش نهایی در INBOX در host1. \& \-\noemailreport2 : عدم قرار دادن گزارش نهایی در INBOX در host2. \& \& \-\noid : عدم ارسال/دریافت دستور IMAP به نام "ID" به سرورهای IMAP. \& \& \-\justconnect : فقط اتصال به هر دو سرور و نمایش اطلاعات مفید. \& تنها به گزینه‌های \-\host1 و \-\host2 نیاز دارد. \& منسوخ شده است چون اجرای "imapsync \-\host1 imaphost" به تنهایی \& این حالت را به همراه دارد. \& \& \-\justlogin : فقط ورود به هر دو سرور host1 و host2 با اطلاعات کاربری و سپس خروج. \& \& \-\justfolders : فقط انجام کارهای مربوط به پوشه‌ها (نادیده گرفتن پیام‌ها). \& \& \-\help : چاپ این راهنما. \& \& مثال: همگام‌سازی حساب کاربری IMAP به نام "test1" روی "test1.lamiral.info" \& به حساب کاربری IMAP به نام "test2" روی "test2.lamiral.info" \& با گذرواژه "secret1" برای حساب test1 \& و گذرواژه "secret2" برای حساب test2: \& \& imapsync \e \& \-\host1 test1.lamiral.info \-\user1 test1 \-\password1 secret1 \e \& \-\host2 test2.lamiral.info \-\user2 test2 \-\password2 secret2 .Ve .SH "امنیت (SECURITY)" .IX Header "SECURITY" می‌توانید برای ذکر گذرواژه به جای \-\password1 از \-\passfile1 استفاده کنید که بسیار امن‌تر است. با گزینه \-\password1 در لینوکس، هر کاربری روی سیستم می‌تواند با دستور 'ps auxwwww' گذرواژه را ببیند. استفاده از متغیر محیطی (مانند IMAPSYNC_PASSWORD1) نیز به دلیل دستور 'ps auxwwwwe' خطرناک است. بنابراین، ذخیره گذرواژه در یک فایل با دسترسی محافظت‌شده (600 یا rw-------) بهترین راهکار است. .PP ابزار imapsync در صورت امکان به طور پیش‌فرض رمزنگاری SSL/TLS را فعال می‌کند. .PP رفتار دقیق پشت این عبارت «در صورت امکان» چیست؟ .PP اگر درگاه شناخته‌شده imaps (درگاه 993) بر روی سرورهای IMAP باز باشد، imapsync سازوکار SSL/TLS را فعال می‌کند. اگر درگاه imaps بسته باشد، imapsync یک اتصال معمولی (متن خام و رمزنگاری‌نشده) روی درگاه 143 باز می‌کند. اما سپس در فهرست قابلیت‌های (CAPABILITY) سرورها به دنبال پشتیبانی از STARTTLS می‌گردد. اگر STARTTLS پشتیبانی شود، imapsync با دستور IMAP موسوم به STARTTLS به سمت رمزنگاری SSL/TLS می‌رود. .PP اگر تشخیص‌های خودکار SSL/TLS ناموفق باشند، imapsync از ارتباط متن خام (clear-text) استفاده می‌کند. ارتباط متن خام در برابر شنود در شبکه به خصوص برای گذرواژه‌ها محافظت ایجاد نمی‌کند. .PP اگر می‌خواهید SSL/TLS را اجباری کنید، کافی است از \-\ssl1 و \-\ssl2 یا \-\tls1 و \-\tls2 استفاده کنید. با هیچ‌یک از این گزینه‌ها، imapsync به سمت ارتباط متن خام نخواهد رفت. .PP همچنین سند FAQ.Security.txt را در دایرکتوری FAQ.d/ یا در نشانی زیر ببینید: https://imapsync.lamiral.info/FAQ.d/FAQ.Security.txt .SH "وضعیت خروج (EXIT STATUS)" .IX Header "EXIT STATUS" ابزار imapsync در صورت انجام موفقیت‌آمیز تمام کارها با وضعیت 0 خارج می‌شود. در غیر این صورت با یک وضعیت غیرصفر خاتمه می‌یابد. این رفتار کلاسیک یونیکس است. در زیر فهرست کدهای خروج (عددی صحیح بین 0 تا 255) آمده است. در پوسته‌های سازگار با Bourne Shell این کد پس از فراخوانی imapsync در متغیر "$?" در دسترس است. .PP نام‌ها بیانگر مفهوم آن‌ها هستند: .PP .Vb 10 \& EX_OK => 0 ; #/* پایان موفقیت‌آمیز */ \& EX_USAGE => 64 ; #/* خطای نحوه استفاده از خط فرمان */ \& EX_NOINPUT => 66 ; #/* عدم امکان باز کردن ورودی */ \& EX_UNAVAILABLE => 69 ; #/* سرویس در دسترس نیست */ \& EX_SOFTWARE => 70 ; #/* خطای داخلی نرم‌افزار */ \& EXIT_CATCH_ALL => 1 ; # هرگونه خطای دیگر \& EXIT_BY_SIGNAL => 6 ; # سیگنال دریافتی (128+n) \& EXIT_BY_FILE => 7 ; \& EXIT_PID_FILE_ERROR => 8 ; \& EXIT_CONNECTION_FAILURE => 10 ; \& EXIT_TLS_FAILURE => 12 ; \& EXIT_AUTHENTICATION_FAILURE => 16 ; \& EXIT_SUBFOLDER1_NO_EXISTS => 21 ; \& EXIT_WITH_ERRORS => 111 ; \& EXIT_WITH_ERRORS_MAX => 112 ; \& EXIT_OVERQUOTA => 113 ; \& EXIT_ERR_APPEND => 114 ; \& EXIT_ERR_FETCH => 115 ; \& EXIT_ERR_CREATE => 116 ; \& EXIT_ERR_SELECT => 117 ; \& EXIT_TRANSFER_EXCEEDED => 118 ; \& EXIT_ERR_APPEND_VIRUS => 119 ; \& EXIT_ERR_FLAGS => 120 ; \& EXIT_ERR_SEARCH => 121 ; \& EXIT_TESTS_FAILED => 254 ; # مشابه API آزمون‌های Test::More \& EXIT_CONNECTION_FAILURE_HOST1 => 101 ; \& EXIT_CONNECTION_FAILURE_HOST2 => 102 ; \& EXIT_AUTHENTICATION_FAILURE_USER1 => 161 ; \& EXIT_AUTHENTICATION_FAILURE_USER2 => 162 ; .Ve .SH "مجوز و حق نشر (LICENSE AND COPYRIGHT)" .IX Header "LICENSE AND COPYRIGHT" ابزار imapsync یک نرم‌افزار آزاد، متن‌باز و عمومی است (هرچند همیشه رایگان نیست) که تحت پوشش مجوز NOLIMIT Public License (که اکنون NLPL نامیده می‌شود) قرار دارد. فایل LICENSE موجود در بسته توزیع را ببینید، یا فقط جمله ساده زیر را بخوانید چرا که متن کامل مجوز همین است: .PP .Vb 1 \& "No limits to do anything with this work and this license." .Ve .PP در صورتی که به اندازه کافی طولانی نیست، دوباره تکرار می‌کنم: .PP .Vb 1 \& "No limits to do anything with this work and this license." .Ve .PP مشاهده نشانی: https://imapsync.lamiral.info/LICENSE .SH "نویسنده (AUTHOR)" .IX Header "AUTHOR" Gilles LAMIRAL .PP بازخوردهای مثبت همیشه مورد استقبال هستند. بازخوردهای منفی نیز بسیار مورد استقبال قرار می‌گیرند. .PP Gilles LAMIRAL امرار معاش خود را از طریق نوشتن، نصب، پیکربندی و گاهی آموزش نرم‌افزارهای آزاد و متن‌باز به دست می‌آورد. ابزار imapsync قبلاً همیشه رایگان بود، اما اکنون تنها اغلب اوقات رایگان است؛ چرا که توسط نویسنده‌اش به فروش می‌رسد تا راهکاری برای پشتیبانی و نگهداری نرم‌افزارهای آزاد در طول چند دهه باشد. .SH "ایرادات و محدودیت‌ها (BUGS AND LIMITATIONS)" .IX Header "BUGS AND LIMITATIONS" مشاهده نشانی: https://imapsync.lamiral.info/FAQ.d/FAQ.Reporting_Bugs.txt .SH "سرورهای IMAP پشتیبانی‌شده (IMAP SERVERS supported)" .IX Header "IMAP SERVERS supported" مشاهده نشانی: https://imapsync.lamiral.info/S/imapservers.shtml .SH "مهاجرت‌های بزرگ (HUGE MIGRATION)" .IX Header "HUGE MIGRATION" اگر صندوق‌های پستی زیادی برای مهاجرت دارید، به یک برنامه کوچک پوسته (shell script) فکر کنید. فایلی به نام file.txt (برای مثال) حاوی کاربران و گذرواژه‌ها بسازید. جداکننده استفاده‌شده در این مثال ';' است. .PP فایل file.txt شامل موارد زیر است: .PP user001_1;password001_1;user001_2;password001_2 user002_1;password002_1;user002_2;password002_2 user003_1;password003_1;user003_2;password003_2 user004_1;password004_1;user004_2;password004_2 user005_1;password005_1;user005_2;password005_2 \&... .PP در یونیکس، برنامه شل می‌تواند به این شکل باشد: .PP .Vb 4 \& { while IFS=\*(Aq;\*(Aq read u1 p1 u2 p2; do \& imapsync \-\host1 imap.side1.org \-\user1 "$u1" \-\password1 "$p1" \e \& \-\host2 imap.side2.org \-\user2 "$u2" \-\password2 "$p2" ... \& done ; } < file.txt .Ve .PP در ویندوز، اسکریپت بچ (batch) می‌تواند به این شکل باشد: .PP .Vb 3 \& FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.txt) DO imapsync ^ \& \-\host1 imap.side1.org \-\user1 %%G \-\password1 %%H ^ \& \-\host2 imap.side2.org \-\user2 %%I \-\password2 %%J ... .Ve .PP عبارت ... می‌تواند با هیچ یا هر گزینه‌ای از imapsync جایگزین شود. به دنیای برنامه‌نویسی شل و بچ خوش آمدید! .PP اسکریپت‌های از پیش آماده‌شده را در نشانی زیر خواهید یافت: https://imapsync.lamiral.info/examples .SH "نصب (INSTALL)" .IX Header "INSTALL" .Vb 1 \& ابزار Imapsync تحت هر سیستم یونیکسی به همراه Perl اجرا می‌شود. \& \& ابزار Imapsync تحت بیشتر نسخه‌های ویندوز (2000، XP، Vista، Seven، Eight، \& Ten، Eleven، و تمام نگارش‌های سرور 2000، 2003، 2008 و R2، 2012 \& و R2، 2016) به عنوان یک نرم‌افزار باینری مستقل با نام imapsync.exe اجرا می‌شود، \& که معمولاً از یک فایل بچ اجرا می‌گردد تا از تایپ همیشگی گزینه‌ها جلوگیری شود. \& نشانی زیر را ببینید: \& https://imapsync.lamiral.info/README_Windows.txt \& \& ابزار Imapsync روی macOS (OS X) به صورت باینری مستقل به نام \& imapsync_bin_Darwin اجرا می‌شود: \& https://imapsync.lamiral.info/INSTALL.d/INSTALL.Darwin.txt \& \& خرید آخرین نسخه imapsync در نشانی: \& https://imapsync.lamiral.info \& \& پیوندی به یک فایل فشرده با نام imapsync\-2.xxx.tgz دریافت خواهید کرد \& که 2.xxx شماره نسخه است. فایل tar را در مسیر دلخواه استخراج کنید (در یونیکس): \& \& tar xzvf imapsync\-2.xxx.tgz \& \& وارد دایرکتوری imapsync\-x.xx شوید و فایل INSTALL را بخوانید. همان‌طور که در \& نشانی https://imapsync.lamiral.info/#install ذکر شده، فایل INSTALL در نشانی \& https://imapsync.lamiral.info/INSTALL.d/INSTALL.ANY.txt نیز موجود است. \& این مستندات اکنون به چندین فایل برای هر سیستم تقسیم شده است: \& https://imapsync.lamiral.info/INSTALL.d .Ve .SH "پیکربندی (CONFIGURATION)" .IX Header "CONFIGURATION" فایل پیکربندی خاصی برای imapsync وجود ندارد؛ همه چیز از طریق پارامترهای خط فرمان و رفتار پیش‌فرض مشخص می‌شود. .SH "توسعه و دستکاری (HACKING)" .IX Header "HACKING" هر طور مایلید imapsync را تغییر دهید و دستکاری کنید، چرا که مجوز NOLIMIT اجازه این کار را می‌دهد. .SH "نرم‌افزارهای مشابه (SIMILAR SOFTWARE)" .IX Header "SIMILAR SOFTWARE" .Vb 1 \& مشاهده نشانی: https://imapsync.lamiral.info/S/external.shtml .Ve .SH "تاریخچه (HISTORY)" .IX Header "HISTORY" من در ابتدا imapsync را در ژوئیه ۲۰۰۱ نوشتم زیرا شرکتی به نام BaSystemes به من پول پرداخت کرد تا یک سرور IMAP جدید را بدون از دست دادن صندوق‌های پستی حجیم و قدیمی مستقر در یک سرور دوردست، که از طریق یک خط ارتباطی ISDN با پهنای باند کم و قطعی‌های مکرر در دسترس بود، راه‌اندازی کنم. .PP من باید صحت انتقال تمام صندوق‌های پستی، تمام پوشه‌ها و تمام پیام‌ها را تأیید می‌کردم، بدون اینکه پهنای باند هدر رود یا در همگام‌سازی‌های مجدد پیام تکراری ایجاد شود. طراحی imapsync با الهام از دستور شگفت‌انگیز rsync انجام شد. .PP ابزار imapsync ابتدا به عنوان یک وصله (patch) برای اسکریپت copy_folder.pl آغاز شد. اسکریپت copy_folder.pl از کد منبع بسته پرل Mail\-IMAPClient\-2.1.3 (به طور دقیق‌تر در پوشه examples/ بسته Mail\-IMAPClient) آمده بود. .PP از آن زمان تغییرات بسیار زیادی رخ داده است به طوری که شک دارم آیا حتی یک خط از copy_folder.pl اولیه در کد منبع imapsync باقی مانده باشد یا خیر.