نصب و پیکربندی Postfix در اوبونتو 20.04

Postfix یک عامل انتقال ایمیل (MTA) است ، که برای هدایت و دریافت ایمیل در سیستم لینوکس استفاده می شود. پیش بینی میشود حدود 25 درصد سرور مجازی های ایمیل عمومی در اینترنت Postfix را اجرا میکنند.در این راهنما ، نحوه نصب و پیکربندی Postfix را در سرور مجازی Ubuntu 20.04 یاد خواهید گرفت. سپس با نصب s-nail ، یک نماینده کاربر ایمیل (MUA) ، که به کلاینت ایمیل نیز شناخته میشود، آزمایش می کنید که آیا Postfix قادر است به درستی ایمیل را مسیریابی کند.توجه داشته باشید که هدف از این آموزش این است که به شما کمک کند تا فقط با برخی از قابلیت های معمول ایمیل، سریعا Postfix را راه اندازی و اجرا کنید. در پایان این راهنما یک سرور مجازی ایمیل تمام عیار ندارید ، اما برخی از مؤلفه های اساسی چنین ستاپی را برای کمک به شما در شروع کار خواهید داشت.پیش نیازهابرای پیروی از این راهنما ، موارد زیر را لازم دارید:• سرور مجازی دارای Ubuntu 20.04 که به عنوان سرور مجازی ایمیل Postfix شما فعالیت می کند. این سرور مجازی باید دارای یک کاربر غیر ریشه با امتیازات sudo و فایروال تنظیم شده با UFW باشد. برای تنظیم این گزینه می توانید راهنمای ستاپ اولیه سرور مجازی Ubuntu 20.04 را دنبال کنید.• یک نام دامنه کاملاً واجد شرایط که به سرور مجازی Ubuntu 20.04 شما اشاره کند. توجه داشته باشید که اگر قصد دسترسی به ایمیل از یک مکان خارجی را دارید ، باید مطمئن شوید که یک رکورد MX دارید که به سرور مجازی ایمیل شما نیز اشاره کند.توجه داشته باشید که این آموزش با این فرض پیش میرود که شما هاستی را پیکربندی می کنید که دارای FQDN mail.example.com میباشد. در صورت لزوم ، حتماً example.com یا mail.example.com را تغییر دهید تا FQDN شما را منعکس کند.مرحله 1 – نصب PostfixPostfix در مخازن پیش فرض اوبونتو گنجانده شده است ، بنابراین می توانید آن را با APT نصب کنید.برای شروع ، حافظه نهان بسته محلی apt خود را به روز کنید:$ sudo apt updateسپس بسته ی postfix را با دستور زیر نصب کنید. توجه داشته باشید که در اینجا ما متغیر محیطی DEBIAN_PRIORITY=low را در این دستور نصب وارد میکنیم. این امر باعث می شود فرآیند نصب از شما بخواهد برخی گزینه های اضافی را پیکربندی کنید:$ sudo DEBIAN_PRIORITY=low apt install postfixاین فرآیند نصب یک سری اعلان های تعاملی را باز می کند. برای اهداف این آموزش ، از اطلاعات زیر برای پر کردن فرم های خود استفاده کنید:• نوع کلی پیکربندی ایمیل؟برای این، Internet Site را انتخاب کنید چرا که با تیازهای فراساختاری مطابقت دارد.• نام ایمیل سیستم: این دامنه اصلی است که برای ساختن یک آدرس ایمیل معتبر استفاده می شود هنگامی که فقط بخش حساب آدرس داده می شود. به عنوان مثال ، نام میزبان سرور مجازی شما mail.example.com است. به احتمال زیاد باید نام ایمیل سیستم را به صورت example.com قرار دهید تا با توجه به نام کاربری user1 ، Postfix از آدرس user1@example.com استفاده کند.• گیرنده ایمیل Root و postmaster: این حساب لینوکس است که از طریق ایمیل به root @ و postmaster @ ارسال می شود. برای این کار از حساب اصلی خود استفاده کنید. در این مورد مثال ، Sammy .• سایر مقاصد برای پذیرش ایمیل: مقصد پستی را که این نمونه Postfix می پذیرد تعیین می کند. اگر لازم است دامنه دیگری را که این سرور مجازی مسئول دریافت آن است اضافه کنید ، آنها را در اینجا اضافه کنید. در غیر این صورت ، پیش فرض کافی خواهد بود.• اجبار به روزرسانی های همزمان در صف ایمیل ؟: از آنجا که به احتمال زیاد از یک سیستم فایل ژورنال دار استفاده می کنید ، no را در اینجا بپذیرید.• شبکه های محلی: لیستی از شبکه هایی است که سرور مجازی ایمیل شما برای تقویت پیام های آن ها پیکربندی شده است. پیش فرض برای بیشتر سناریوها کار خواهد کرد. اگر می خواهید آن را تغییر دهید ، مطمئن شوید که از نظر دامنه شبکه بسیار محدود باشد.• محدودیت اندازه صندوق پستی: این می تواند برای محدود کردن اندازه پیام ها استفاده شود. تنظیم آن بر روی 0 محدودیت اندازه را غیرفعال می کند.• کاراکتر پسوند آدرس محلی: کاراکتری است که می تواند برای جدا کردن قسمت معمول آدرس از یک پسوند (برای ایجاد نام های مستعار پویا استفاده شود) استفاده می شود. به طور پیش فرض ، + برای این آموزش کار خواهد کرد.• پروتکل های اینترنت برای استفاده: انتخاب کنید آیا نسخه IP را که Postfix از آن پشتیبانی می کند محدود کنید یا خیر. برای اهداف این آموزش ، all را انتخاب کنید.برای بیان صریح تر ، این تنظیمات مورد استفاده در این راهنماست:نوع کلی پیکربندی ایمیل: سایت اینترنتینام ایمیل سیستم: example.com (نه mail.example.com)گیرنده ایمیل Root و postmaster: نام کاربری حساب لینوکس اولیه (در این مثال ها sammy )سایر مقاصد برای پذیرش ایمیل: $myhostname, example.com, mail.example.com, localhost.example.com,localhostاجبار به روزرسانی های همزمان در صف ایمیل : خیرشبکه های محلی: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128محدودیت اندازه صندوق پستی: 0کاراکتر پسوند آدرس محلی: +پروتکل های اینترنت برای استفاده:alتوجه: اگر نیاز به بازگشت برای تغییر این تنظیمات داشتید ، می توانید با تایپ کردن دستور زیر این کار را انجام دهید:$ sudo dpkg-reconfigure postfixاعلان ها با پاسخ های قبلی شما ، از قبل پر می شوند.پس از اتمام مراحل نصب ، می توانید چند نسخه به روزرسانی پیکربندی Postfix خود را انجام دهید.مرحله 2 – تغییر پیکربندی Postfixاکنون می توانید برخی تنظیمات را انجام دهید که روند نصب بسته از شما نخواسته بود. بسیاری از تنظیمات پیکربندی Postfix در فایل /etc/postfix/main.cf تعریف شده اند. به جای ویرایش مستقیم این فایل ، می توانید از دستور postconf Postfix برای پرس و جو یا تعیین تنظیمات پیکربندی استفاده کنید.برای شروع ، لوکیشن را برای صندوق پستی کاربر غیر ریشه اوبونتو تنظیم کنید. در این راهنما ، ما از قالب Maildir استفاده خواهیم کرد ، که پیام ها را به فایل های جداگانه که بر اساس عملکرد کاربر بین دایرکتوری ها منتقل می شوند ، جدا می کند. گزینه دیگری که در این راهنما پوشش داده نشده است ، فرمت mbox است که تمام پیام ها را در یک فایل واحد ذخیره می کند.متغیر home_mailbox را روی Maildir/ تنظیم کنید. سپس ، یک ساختار دایرکتوری تحت این نام در دیرکتوری هوم کاربر خود ایجاد خواهید کرد. home_mailbox را با تایپ کردن دستور زیر پیکربندی کنید:$ sudo postconf -e ‘home_mailbox= Maildir/’در مرحله بعدی ، مکان جدول virtual_alias_maps را تنظیم کنید ، که نقشه های ایمیل دلخواه را به حساب های سیستم لینوکس نگاشت می کند. دستور زیر را اجرا کنید ، که نقشه جدول را در یک فایل پایگاه داده هش به نام / etc / postfix / virtual نگاشت می کند:$ sudo postconf -e ‘virtual_alias_maps= hash:/etc/postfix/virtual’اکنون که مکان فایل نقشه های مجازی را در فایل main.cfخود تعریف کرده اید ، می توانید خود این فایل را ایجاد کرده و نگاشت حساب های ایمیل را به حساب کاربری در سیستم لینوکس خود شروع کنید. فایل را با ویرایشگر متن مورد نظر خود ایجاد کنید. در این مثال ، ما از nano استفاده خواهیم کرد:$ sudo nano /etc/postfix/virtualآدرسهایی را که مایلید ایمیل را برای آن بپذیرید ، لیست کنید و به دنبال آن فضای سفید و کاربر لینوکس را که دوست دارید ایمیل را به ان تحویل دهید.به عنوان مثال ، اگر می خواهید ایمیل را در آدرس contact@example.com و admin@example.com بپذیرید و دوست دارید آن ایمیل ها را به کاربر sammy Linux تحویل دهید ، می توانید فایل خود را مانند این تنظیم کنید:/etc/postfix/virtualcontact@example.com sammyadmin@example.com sammyپس از نگاشت همه آدرس ها به حساب های سرور مجازی مناسب ، فایل را ذخیره کنید و ببندید. اگر از nano استفاده کرده اید ، این کار را با فشار دادن CTRL + X ، Y ، سپس ENTER انجام دهید.نگاشت را با تایپ این دستور اعمال کنید:$ sudo postmap /etc/postfix/virtualفرایند Postfix را مجدداً راه اندازی کنید تا مطمئن شوید که تمام تغییرات شما اعمال شده است:$ sudo systemctl restart postfixبا فرض اینکه از راهنمای ستاپ اولیه پیروی کرده اید ، فایروال را با UFW پیکربندی نموده اید. این فایروال به طور پیش فرض اتصالات خارجی را به سرویس های روی سرور مجازی شما مسدود می کند مگر اینکه این اتصالات به صراحت مجاز باشند ، بنابراین باید یک قانون فایروال اضافه کنید تا استثنائی برای Postfix داشته باشید.می توانید با تایپ دستور زیر، اجازه اتصالات به سرویس را بدهید:$ sudo ufw allow Postfixبا این کار ، Postfix پیکربندی شده و آماده پذیرش اتصالات خارجی است. با این حال ، شما هنوز آمادگی آزمایش آن را با یک سرویس گیرنده ایمیل ندارید. قبل از اینکه بتوانید کلاینت را نصب کنید و از آن برای تعامل با ایمیل ارسال شده به سرور مجازی خود استفاده کنید ، لازم است چند تغییر در تنظیمات سرور مجازی اوبونتو انجام دهید.مرحله 3 – نصب کلاینت پست الکترونیکی و اولیه سازی ساختار Maildirبه منظور تعامل با ایمیل تحویل داده شده ، این مرحله شما را با روند نصب بسته s-s-nail آشنا می کند. یک متغیر پر از ویژگی از کلاینت xmail BSD است که می تواند فرمت Maildir را به درستی اداره کند.اما قبل از نصب کلاینت ، منطقی است که مطمئن شوید متغیر محیط MAIL شما به درستی تنظیم شده است. s-nailبه دنبال این متغیر است تا بفهمد کجا می تواند ایمیل را برای کاربر شما پیدا کند.برای اطمینان از تنظیم متغیر MAIL بدون توجه به نحوه دسترسی به حساب کاربری خود – خواه از طریق ssh، su، su – یا sudo، به عنوان مثال – باید متغیر را در فایل /etc/bash.bashrc تنظیم کرده و اضافه کنید. آن را به فایلی در /etc/profile.d اضافه کنید تا مطمئن شوید که به طور پیش فرض برای همه کاربران تنظیم شده است.برای افزودن متغیر به این فایل ها ، دستور زیر را تایپ کنید:$ echo ‘export MAIL=~/Maildir’ | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.shبرای خواندن متغیر در بخش فعلی ، فایل /etc/profile.d/mail.sh را وارد کنید:$ source /etc/profile.d/mail.shبا کامل شدن آن ، کلاینت ایمیل s-nail را با APT نصب کنید:$ sudo apt install s-nailقبل از اجرای کلاینت ، چند تنظیمات وجود دارد که باید انجام دهید. فایل /etc/s-nail.rc را در ویرایشگر خود باز کنید:$ sudo nano /etc/s-nail.rcدر انتهای فایل گزینه های زیر را اضافه کنید:/etc/s-nail.rc. . .set emptystartset folder=Maildirset record=+sentدر اینجا عملکرد این خطوط آورده شده است:set emptystart به کلاینت اجازه می دهد حتی با یک صندوق ورودی خالی باز شودset folder=Maildir دیرکت.ری Maildir را روی متغیر folder داخلی تنظیم می کندset record=+sent یک فایل mbox ارسال شده را برای ذخیره ایمیل ارسال شده در هر دیرکتوری به عنوان متغیر folder ایجاد می کند ، در این حالت Maildirپس از اتمام فایل را ذخیره کنید و ببندید. اکنون آماده هستید تا ساختار Maildir سیستم را تنظیم کنید.یک راه سریع برای ایجاد ساختار Maildir در دیرکتوری هوم شما این است که به خودتان یک ایمیل با دستور s-nail ارسال کنید. از آنجا که فایل ارسال شده فقط پس از ایجاد Maildir در دسترس خواهد بود ، شما باید نوشتن آن را برای این ایمیل اولیه غیرفعال کنید. این کار را با عبور از گزینه -Snorecord انجام دهید.با اتصال یک رشته به دستور s-nail ، ایمیل را ارسال کنید. این دستور را تنظیم کنید تا کاربر Linux خود را به عنوان گیرنده علامت گذاری کند:$ echo ‘init’ | s-nail -s ‘init’ -Snorecord sammyتوجه: ممکن است پاسخ زیر را دریافت کنید:OutputCan’t canonicalize “/home/sammy/Maildir”طبیعی است و ممکن است هنگام ارسال این پیام اول ظاهر شود.با جستجوی دیرکتوری ~ / Maildir خود می توانید مطمئن شوید که دیرکتوری ایجاد شده است:$ ls -R ~/Maildirخواهید دید که ساختار دایرکتوری ایجاد شده است و یک فایل پیام جدید در دیرکتوری ~ / Maildir / new موجود است:Output/home/sammy/Maildir/:cur new tmp/home/sammy/Maildir/cur:/home/sammy/Maildir/new:1463177269.Vfd01I40e4dM691221.mail.example.com/home/sammy/Maildir/tmp:اکنون که ساختار دایرکتوری ایجاد شده است ، می توانید با مشاهده پیام init که ارسال کرده اید و ارسال یک پیام به آدرس ایمیل خراجی، کلاینت s-nail s را امتحان کنید.مرحله 5 – آزمایش کلاینتبرای باز کردن کلاینت ، دستور s-nail را اجرا کنید:$ s-nailدر کنسول خود ، یک صندوق ورودی ابتدایی با پیام init خواهید دید:Outputs-nail version v14.9.15. Type `?’ for help“/home/sammy/Maildir”: 1 message 1 new>N 1 sammy@example.com 2020-05-19 15:40 14/392 initبرای نمایش پیام، ENTER را فشار دهید:Output[– Message 1 — 14 lines, 369 bytes –]:From sammy@example.com Tue May 19 15:40:48 2020Date: Tue, 19 May 2020 15:40:48 +0000To: sammy@example.comSubject: initMessage-Id: <20160513220749.A278F228D9@mail.example.com>From: sammy@example.cominitمی توانید با تایپ h و سپس ENTER به لیست پیام ها برگردید :? hOutput>R 1 sammy@example.com 2020-05-19 15:40 14/392 initتوجه کنید که پیام اکنون حالت R دارد ، نشان می دهد که خوانده شده است.از آنجا که این پیام چندان مفید نیست ، می توانید با فشار دادن d آن را حذف کرده و سپس ENTER بزنید.? dبرای بازگشت به ترمینال ، q و سپس ENTER را بزنید:? qبه عنوان یک آزمایش نهایی ، بررسی کنید که آیا s-nail قادر به ارسال صحیح پیام های ایمیل است یا خیر. برای این کار می توانید همانند پیام init که در مرحله قبل برای خود ارسال کردید ، محتویات یک فایل متنی را درون فرایند s-nail قرار دهید.با نوشتن پیام آزمایشی در ویرایشگر متن شروع کنید:$ nano ~/test_messageدر داخل ، متنی را که می خواهید ارسال کنید ، وارد کنید:~/test_messageHello,This is a test. Please confirm receipt!فایل را پس از نوشتن پیام خود ذخیره کنید و ببندید.سپس از دستور cat برای ارسال پیام به روند s-nail استفاده کنید. می توانید با مثال زیر این کار را انجام دهید:-s: خط موضوع پیام ایمیل را مشخص می کند-r: تغییر اختیاری در قسمت “from” ایمیل. به طور پیش فرض ، کاربر لینوکس که با آن وارد شده اید برای پر کردن این فیلد استفاده می شود. گزینه -r به شما امکان می دهد این مسئله را با یک آدرس معتبر ، مانند یکی از مواردی که در فایل / etc / postfix / virtual تعریف کرده اید ، پر کنید. برای نشان دادن ، دستور زیر از contact@example.com استفاده می کندهمچنین ، حتما user@email.com را به یک آدرس ایمیل معتبر که به آن دسترسی دارید تغییر دهید:$ cat ~/test_message | s-nail -s ‘Test email subject line’ -r contact@example.com user@email.comسپس ، برای آدرس ایمیلی که پیام را برای آن ارسال کرده اید ، به صندوق ورودی بروید. پیام خود را تقریباً فوراً خواهید دید.توجه: اگر پیام در صندوق ورودی شما نیست ، ممکن است به پوشه Spam تحویل داده شده باشد.می توانید پیام های ارسالی خود را در کلاینت s-nail خود مشاهده کنید. دوباره کلاینت تعاملی را شروع کنید:$ s-nailاز کلاینت ایمیل ، پیام های ارسالی خود را با تایپ کردن این دستور مشاهده کنید:? file +sentخروجی مانند این را خواهید دید:Output+[/home/sammy/Maildir/]sent: 1 message 1 new▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject lineمی توانید ایمیل ارسال شده را با استفاده از همان دستوراتی که برای ایمیل های ورودی استفاده می کنید مدیریت کنید.نتیجهاکنون Postfix را در سرور مجازی Ubuntu 20.04 خود تنظیم کرده اید. مدیریت سرور مجازی های ایمیل می تواند یک کار سخت برای مدیران جدید سیستم باشد ، اما با این پیکربندی ، باید عملکرد ایمیل MTA کافی را برای شروع کار خود داشته باشید.