برای ارسال یا دریافت ایمیل باید یک میل سرور داشته باشید. در این مقاله به بررسی میل سرور لینوکس و تشریح عملکرد SMTP ( Simple Mail Transfer Protocol ) و سایر پروتکلهای مرتبط با ایمیل مانند پروتکل POP ( Post Office Protocol ) و IMAP (Internet Message Access Protocol) و ارتباط بین آنها خواهیم پرداخت.
سرور SMTP لینوکس
SMTP نحوه ارسال ایمیل از یک هاست به هاست دیگر را تعریف میکند و همچنین مستقل از نوع سیستم است. به این معنی که فرستنده و گیرنده میتوانند دارای سیستم عاملهای متفاوت باشند. SMTP تنها مستلزم آن است که یک سرور قادر باشد یک متن را در قالب کد ASCII و بهصورت مستقیم به سرور دیگر ارسال کند، که میتوانید این کار را با اتصال به سرور از طریق port 25که پورت استاندارد SMTP است، انجام دهید. امروزه بیشتر توزیعهای لینوکس با دو نوع از متداولترین سرورهای SMTP پیاده سازی میشوند که عبارتند از Sendmail و Postfix.
Sendmail یک میل سرور معروف و رایگان است، اما طراحی آن کمی پیچیده بوده و از امنیت پایینتری برخوردار است.
Postfix میل سرور را یک گام به جلو ارتقاء داده، و بههنگام توسعه امنیت بالاتری را مورد توجه قرار داده است.
اجزاء میل سرویس
سرویس ایمیل در هر mail server از سه جزء تشکیل شده است:
(Mail user agent (MUA: در این بخش که کاربر قادر به مشاهده و کار کردن با آن است در واقع امکان خواندن و نوشتن ایمیل را برای کاربر فراهم میکند مانند: Thunderbird و Microsoft Outlook.
(Mail transport agent (MTA: این بخش مسئولیت انتقال ایمیل از یک سایت به سایت دیگر را بر عهده دارد مانند: Sendmail و Postfix.
(Mail delivery agent (MDA: این بخش نیز وظیفه توزیع پیامهای دریافتی را به میل باکسهای postfix-maildrop و Procmail در دستگاههای لوکال بر عهده دارد.
آموزش نصب و کانفیگ میل سرور
در این مقاله، به آموزش میل سرور Postfix میپردازیم که امروزه در بین system adminها بسیار محبوب و رایج است. Postfix میل سرور پیش فرض در بیشتر توزیعهای مدرن لینوکس است.
ابتدا نصب بودن آن را بر روی سیستم خود، و با دستور زیر بررسی کنید:
rpm -qa | grep postfix $
در صورتی که میل سرور Postfix بر روی سیستم شما نصب نباشد، میتوانید از دستور زیر برای نصب آن بر روی توزیعهای مبتنی بر Redhat استفاده کنید:
dnf -y install postfix $
سپس برای راه اندازی سرویس postfix و همچنین فعال کردن آن در هنگام راه اندازی سیستم، دستور زیر را وارد کنید:
در توزیعهای مبتنی بر Debian مانند اوبونتو نیز میتوانید با کمک دستور زیر، عملیات نصب را انجام دهید:
apt-get -y install postfix $
در ادامه و در هنگام نصب، بایستی نوع تنظیمات میل سرور Postfix را انتخاب کنید. از میان چهار گزینه No configuration ،Internet site، Internet with smarthost ،Satellite system و Local only، گزینه No configuration را انتخاب کنید.
تنظیمات میل سرور لینوکس
پس از نصب میل سرور Postfix، بایستی آن را کانفیگ کنید. میتوانید بیشتر فایلهای کانفیگ را در مسیر /etc/postfix/ پیدا کنید. همچنین میتوانید تنظیمات اصلی مربوط به کانفیگ میل سرور Postfix را در فایل /etc/postfix/main.cf پیدا کنید. این فایل شامل گزینههای زیادی از جمله موارد زیر است:
myhostname
میتوانید از این گزینه برای تعیین نام هاست mail server استفاده کنید. این نام هاست اینترنتی است که Postfix ایمیلها را بر روی آن دریافت میکند. hostname میتواند بهصورت mail.example.com یا smtp.example.com باشد.
myhostname = mail.example.com
mydomain
این گزینه دامنه متعلق به ایمیل است که برای سرویس دهی از آن استفاده خواهد شد، مانند example.com
و نحوه تنظیم و کد دستوری آن نیز بدین صورت است:
mydomain = example.com
myorigin
تمامی ایمیلهای این mail server، با تنظیم این گزینه ارسال میشوند. میتوانید تنظیمات آن را مانند مثال زیر بهصورت mydomain$ انجام دهید.
myorigin = $mydomain
میتوانید از هر مقدار دلخواه دیگری نیز برای این گزینه استفاده کنید، فقط باید از علامت $ قبل از عبارت mydomain$ استفاده کنید.
mydestination
این گزینه دامنههایی را که سرور Postfix برای ایمیلهای ورودی از آنها استفاده میکند، لیست میکند. که مقادیر قابل استفاده در آن بهصورت زیر خواهند بود:
به یک دایرکتوری spool مرکزی، که در این حالت ایمیلها در مسیر /var/spool/mail و با یک فایل برای هر کاربر قرار میگیرد.
mail_spool_directory = /var/spool/mail
mynetworks
این گزینه به شما این امکان را میدهد که تعیین کنید کدام سرورها میتوانند از طریق سرور Postfix ایمیل ارسال کنند. با تنظیم این گزینه باید آدرسهای محلی همچون mail script های لوکال، تنها بر روی سرور شما دریافت شود. در غیر این صورت اسپمرها میتوانند از mail server شما برای ارسال پیامهای خود استفاده کرده و در نتیجه سبب قرار گرفتن سرور شما در لیست سیاه شوند و در نتیجه شما قادر نخواهید بود که بخش زیادی از ایمیلهای خود را دریافت کنید.
این گزینه دارای کد دستوری زیر است:
mynetworks = ۱۲۷.۰.۰.۰/۸, ۱۹۲.۱۶۸.۱.۰/۲۴
smtpd_banner
در این متغیر میتوانید پیامی را که سرور پس از اتصال موفق و ارسال موفقیت آمیز ایمیل به مشتری، نمایش میدهد، تنظیم کنید. بهتر است ابن بنر را بهصورتی تغییر دهید که هیچ سرنخی از سرور مورد استفاده شما نشان ندهد.
Intel_protocol
این گزینه نیز نسخه پروتکل IP مورد استفاده برای اتصالها، به سرور را مشخص میکند.
inet_protocols = ipv4
اگر فایلهای تنظیم میل سرور Postfix را تغییر دهید، باید سرویس آن را مجدداً راه اندازی کنید:
systemctl reload postfix $
در هنگام تایپ تنظیمات و کانفیگ، همواره احتمال اشتباه وجود دارد. در این خصوص میتوانید با استفاده از دستور زیر خطاهای احتمالی را بررسی کنید:
postfix check $
این ابزار به شما کمک میکند محل دقیق کد خطا را پیدا کنید و آن را برطرف کنید.
بررسی mail queue
گاهی اوقات صف ایمیل، از کلی پیغام پر میشود. این امر به دلایل زیادی ممکن است رخ دهد، از جمله خرابی شبکه یا هر دلیلی که میتواند ارسال ایمیلها را به تاخیر بیندازد. برای بررسی mail queue در میل سرور لینوکس خود از دستور زیر استفاده کنید:
mailq $
این دستور صف ایمیل ها در Postfix را نمایش میدهد. اگر صف شما پر شده و پردازش پیغامها تا چندین ساعت طول بکشد، باید صف ایمیل را خالی کنید.
postfix flush $
حال بعد از اجرای این دستور اگر صف ایمیلهای خود را بررسی کنید، باید خالی شده باشد.
تست میل سرور لینوکس
پس از تنظیم صحیح میل سرور Postfix، باید آن را تست کنید. اولین قدم استفاده از یک کاربر لوکال ایمیل مانند mailx یا mail است. که برای mailx یک symlink است. ابتدا سعی کنید ایمیلی را برای شخص دیگری در همان سرور ارسال کنید، در صورت موفقیت آن را به یک سایت ریموت نیز ارسال کنید.
echo"This is message body" | mailx -s "This is Subject" -r "likegeeks<likegeeks@example.com>" -a /path/to/attachment someone@example.com $
سپس سعی کنید ایمیلی را از یک سایت ریموت دریافت کنید. در صورت بروز هرگونه مشکل، logها را بررسی کنید. فایلهای log در توزیعهای مبتنی بر Redhat در مسیر /var/log/ maillog و در توزیعهای مبتنی بر Debian در مسیر /var/log/mail.log یا در حالت کلی در مسیری که در تنظیمات rsyslogd تعریف شده است، قرار دارد.
توصیه میشود برای فهم دقیقتر درباره log ها و نحوه کانفیگ rsyslogd، مرجع Linux Syslog Server مطالعه کنید. اگر باز هم مشکل پابرجا بود، تنظیمات DNS و سوابق MX خود را با استفاده از دستورات شبکه Linux بررسی کنید.
ایمن سازی mailbox ها در برابر اسپم توسط SpamAssassin
یکی از راههای مبارزه با اسپمها اسکن mail box توسط برخی از ابزارها و جستجوی الگوهای خاص مرتبط با اسپم است. یکی از بهترین راهحلها برای این منظور نیز ابزار SpamAssassin است که یک ابزار متن باز است.
میتوانید آن را به این صورت نصب کنید:
dnf -y install spamassassin $
سپس سرویس را اجرا کرده و آن را بعد از هر راه اندازی مجدد فعال کنید:
پس از نصب، میتوانید فایل تنظیمات و کانفیگ آن را بهصورت زیر بررسی کنید:
/etc/mail/spamassassin/local.cf
کاربرد ابزار SpamAssassin
ابزار SpamAssassin بر اساس نتیجه امتیازات مختلف اسکریپتها، اسپم بودن یا نبودن یک ایمیل را مشخص میکند. اگر یک پیام امتیاز بالاتری داشته باشد، بدین معناست که احتمال اسپم بودن آن بیشتر است. در فایل تنظیمات، پارامتر required_hits ۵ نشان میدهد که در SpamAssassin، اگر نمره یا امتیاز یک ایمیل پنج یا بالاتر باشد، آن ایمیل بهعنوان اسپم تلقی میشود. گزینه report_safe نیز میتواند دارای یکی از مقادیر ۰، ۱ یا ۲ باشد. در صورت داشتن مقدار ۰ به این معنی است که ایمیل مشخص شده بهعنوان اسپم، به همان صورت ارسال شده و تنها هدر آن برای نمایش بهصورت اسپم، تغییر کرده است. در صورت داشتن مقادیر ۱ یا ۲، SpamAssassin یک پیام جدید ایجاد میکند و آن پیام را به گیرنده میفرستد. مقدار ۱ به این معنی است که پیام spam با محتوای /rfc822 کدگذاری میشود، و چنانچه مقدار ۲ باشد، بدان معناست که پیام بهصورت text/plain کدگذاری شده است.
حالت text/plain مطمئنتر است، چرا که برخی از ابزارهای مدیریت و ارسال و دریافت ایمیل، پیام RFC822 را اجرا میکنند که میتواند کامپیوتر سرویس گیرنده را آلوده کند. اکنون باید آن را در Postfix ادغام کنیم. سادهترین راه برای انجام این کار احتمالاً استفاده از procmail است.
حال باید یک فایل با آن نام ایجاد کنید:
تنظیمات SpamAssassin در سرور Postfix
/etc/procmailrc
سپس محتوای زیر را بدان اضافه کنید:
:۰ hbfw
| /usr/bin/spamc
سپس با کد زیر فایل کانفیگ Postfix را که در مسیر /etc/postfix/main.cf قرار دارد را ویرایش و تغییر دهید:
mailbox_command
بدین صورت:
mailbox_command = /usr/bin/procmail
و در پایان، سرویسهای Postfix و SpamAssassin را مجدداً راه اندازی کنید:
البته SpamAssassin گاهی اوقات تشخص نمیدهد که پیامهایی که inbox را پر کرده است، همان اسپمها هستند. خوشبختانه میتوانید پیامها را قبل از ورود به سرور Postfix با استفاده از Realtime Blackhole Lists (RBL) فیلتر کنید. این امر باعث کاهش بار mail server شما و تمیز ماندن آن خواهد شد.
فایل کانفیگ میل سرور Postfix را که در مسیر /etc/postfix/main.cf قرار دارد، باز کنید و گزینه smtpd_recipient_restriction را تغییر داده و گزینههای زیر را به این ترتیب بدان اضافه کنید:
RBL های فوق از انواع متداول هستند. میتوانید لیستهای بیشتری را در اینترنت پیدا کرده و آنها را نیز امتحان کنید.
تامین امنیت اتصال SMTP
بهتر است ترافیک SMTP خود را با کمک TLS منتقل کنید، تا از آنها در مقابل حملات Man In The Middle (MITM) محافظت کنید. ابتدا باید گواهی و کلید مربوطه را با استفاده از دستور openssl ایجاد کنید:
و در پایان، سرویس postfix را مجدداً راه اندازی کنید:
systemctl restart postfix $
اکنون باید بههنگام اتصال به سرور، TLS را بر روی کلاینت خود انتخاب کنید. به دلیل تایید نشدن گواهینامه، اولین بار پس از تغییر تنظیمات، یک ایمیل هشدار برای شما ارسال خواهد شد.
استفاده از گواهی های Let’s Encrypt
Let’s Encrypt یک ارائه دهنده گواهی SSL رایگان است که به شما امکان میدهد ترافیک خود را رمزگذاری کنید. به جای استفاده از گواهینامههای خود امضا شده (self-signed) که سبب عدم اعتماد کاربران میشود، میتوانید از این راه حل خوب استفاده کنید. ابتدا letsencrypt را نصب کنید:
yum install letsencrypt $
در صورتی که از توزیعهای مبتنی بر Debian استفاده میکنید، میتوانید از دستور زیر استفاده کنید:
شما باید دامنه واقعی خود را جایگزین yourdomain.com کنید. پس از تکمیل قسمتهای مربوطه میبایست اطلاعات مربوط به نام ایمیل، دامنه mail server و لایسنس را بهدرستی وارد کنید.
گواهینامهها در مسیر زیر قرار خواهند گرفت:
/etc/letsencrypt/live/yourdomain.com/
آخرین کاری که باید انجام دهید، تنظیم postfix برای استفاده از آن گواهیها است، که میتوانید از دستورات زیر برای این منظور استفاده کنید:
جایگزینی yourdomain.com با دامنه واقعی خود را فراموش نکنید. و در نهایت، سرور postfix خود را مجدداً راه اندازی کنید:
systemctl restart postfix $
اصول پروتکل های POP3 و IMAP
تا کنون دریافتیم که سرور SMTP چگونه ارسال و دریافت ایمیل را بدون مشکل انجام میدهد، اما شرایط زیر را همیشه در نظر بگیرید:
کاربران برای مشاهده آفلاین اطلاعات، به یک نسخه کپی ایمیل بهصورت لوکال احتیاج دارند.
فرمت فایل mbox پشتیبانی نمیشود. فرمت MBOX فرمتی است که توسط بسیاری از ابزارها مانند mailx و Mutt استفاده میشود.
کاربران نمیتوانند به یک شبکه سریع متصل باشند، تا یک کپی لوکال برای خواندن آفلاین را در اختیار بگیرند.
برخی از mail server ها به دلایل امنیتی، اجازه دسترسی به مسیرهای spool اشتراکی ایمیل را نمیدهند.
برای مدیریت این موارد، باید از پروتکلهای دسترسی به ایمیل استفاده کنید. دو مورد از رایجترین و محبوبترین پروتکلهای دسترسی به ایمیل، Post Office Protocol (POP) و Internet Message Access Protocol (IMAP) است.
ایده زیربنایی POP بسیار ساده است، یک میل سرور لینوکس همیشه آنلاین است و برای همه کاربران ایمیلها را دریافت و ذخیره میکند. همه ایمیلهای دریافت شده در سرور در نوبت قرار میگیرند تا زمانی که کاربر آنها را دریافت کند. هنگامی که یک کاربر میخواهد ایمیلی ارسال کند، سرویس ایمیل بهطور معمول آن را از سرور مرکزی لینوکس توسط SMTP ارسال میکند.
توجه داشته باشید که سرور SMTP و سرور POP میتوانند بدون هیچ مشکلی بر روی یک سیستم قرار داشته باشند. امروزه بیشتر سرورها به همین صورت عمل میکنند. در گذشته ویژگیهایی مانند نگه داشتن یک کپی از ایمیل کاربر در سرور وجود نداشت، که این موضوع منجر به توسعه IMAP شد.
با استفاده از IMAP، میل سرور لینوکس شما از سه حالت دسترسی، پشتیبانی خواهد کرد:
Online mode:
حالت آنلاین که شبیه به داشتن دسترسی مستقیم به فایل سیستم میل سرور لینوکس است.
Offline mode:
حالت آفلاین که شبیه به عملکرد POP است، با این تفاوت که در آن کاربر به جزء زمانی که قصد دریافت یک ایمیل را دارد، به شبکه متصل نیست. در این حالت، سرور بهطور معمول هیچ نسخهای از ایمیل را در خود نگه نمیدارد.
Disconnected mode:
حالت قطع که به کاربران اجازه میدهد نسخه cache شده از ایمیلهای خود را داشته باشند، و سرور نیز یک کپی از ایمیلها را حفظ میکند.
چندین حالت پیاده سازی مختلف برای IMAP و POP وجود دارد که محبوبترین آنها سرور Dovecot است که هر دو پروتکل را ارائه میدهد. پروتکلهای POP3، POP3S، IMAP و IMAPS بهترتیب روی پورتهای ۱۱۰، ۹۹۵، ۱۴۳ و ۹۹۳ کار میکنند.
نصب Dovecot
بیشتر توزیعهای لینوکس بهصورت پیش فرض با نصب Dovecot ارائه می شوند. با این وجود می توانید Dovecot را در توزیع های مبتنی بر Redhat بهصورت زیر نصب کنید:
dnf -y install dovecot $
در توزیعهای مبتنی بر Debian نیز قابلیتهای IMAP و POP3 در دو بسته جداگانه ارائه میشوند، که میتوانید آنها را بهصورت زیر نصب کنید:
apt-get -y install dovecot-imapd dovecot-pop3d $
از شما خواسته میشود برای استفاده از IMAP و POP3 از طریق SSL/TLS، گواهینامههای خود امضاء شده (self-signed certificates) ایجاد کنید. گزینه “بله” را انتخاب کنید و در صورت درخواست نام هاست را وارد کنید.
سپس میتوانید سرویس را اجرا کرده و پس از هر راه اندازی آن را بهصورت زیر فعال کنید:
وقتی کاربری میخواهد به سرور dovecot متصل شود، هشداری دریافت خواهد کرد که گواهیها تایید نشده اند. در صورت تمایل میتوانید از مراجع معتبر صدور گواهینامه، اقدام به خرید کنید.
یا اگر از گواهیهای Let’s Encrypt استفاده میکنید، میتوانید مسیر آنها را وارد کنید:
فراموش نکنید که با ایجاد قوانین iptables برای پورتهای ۱۱۰، ۹۹۵، ۱۴۳، ۹۹۳ و ۲۵، پورتهای سرور dovecot را در فایروال iptables باز کنید. سپس این قوانین را ذخیره کنید .
یا اگر از firewall استفاده میکنید، میتوانید بهصورت زیر عمل کنید:
سینداد یعنی هدیهی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.
سینداد یعنی هدیهی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی
است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار
در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که
سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.