دسته بندی:

آموزش نصب ایمیل سرور در اوبونتو با iRedMail

حدود ۱۲ دقیقه مطالعه

راه‌اندازی یک میل سرور کامل روی اوبونتو یعنی کنار هم نشاندن Postfix برای ارسال، Dovecot برای دریافت، یک پایگاه داده برای حساب‌ها، ضدهرزنامه، ضدویروس، وب‌میل و یک پنل مدیریت. انجام دستی این کار ساعت‌ها طول می‌کشد و یک تنظیم اشتباه کافی است تا ایمیل‌هایتان یا اصلاً نروند یا مستقیم در پوشه اسپم بنشینند. iRedMail دقیقاً برای همین ساخته شده است: یک اسکریپت متن‌باز که همه این اجزا را نصب و به هم وصل می‌کند.

در این آموزش کل مسیر را با iRedMail 1.8.4 (منتشرشده در تیر ۱۴۰۵ / جولای ۲۰۲۶) روی Ubuntu 24.04 LTS می‌رویم؛ از رکوردهای DNS تا گواهی Let’s Encrypt و رکوردهای SPF و DKIM و DMARC.

iRedMail در عمل چه چیزهایی نصب می‌کند

خوب است بدانید بعد از اجرای اسکریپت دقیقاً چه چیزی روی سرور نشسته است؛ چون وقتی مشکلی پیش بیاید باید بدانید سراغ کدام سرویس بروید:

یک سرور ایمیل از چه اجزایی ساخته می‌شودکلاینت کاربر (MUA)اوت‌لوک، تاندربرد، موبایل یا وب‌میل⁦submission 587 / IMAPS 993 / POP3S 995⁩سرورMTA — تحویل و دریافت نامه⁦Postfix⁩فیلتر محتوا و ضدویروس⁦Amavis + SpamAssassin + ClamAV⁩MDA — نوشتن در صندوق و دسترسی⁦Dovecot⁩پایگاه کاربران و مدیریت⁦MySQL / LDAP + admin panel⁩⁦TLS via Let’s Encrypt⁩سرورهای ایمیل دیگرکه نامه شما را می‌پذیرند یا رد می‌کنندبدون این سه رکورد DNS، نامه‌ها به اسپم می‌روند⁦SPF⁩چه سرورهایی اجازه ارسال دارند⁦DKIM⁩امضای رمزنگاری روی خود پیام⁦PTR⁩نام معکوس IP باید با نام میزبان بخواند

آنچه iRedMail نصب می‌کند مجموعه‌ای از همین سرویس‌هاست؛ هر لایه کار جدا و پورت‌های جدای خودش را دارد و بدون رکوردهای DNS درست، هیچ‌کدام به تنهایی کافی نیست.

  • Postfix در نقش MTA، یعنی همان سرویسی که ایمیل را می‌فرستد و از دنیای بیرون تحویل می‌گیرد.
  • Dovecot در نقش سرور IMAP و POP3 که کاربران از طریق آن به صندوق خود وصل می‌شوند.
  • Nginx یا Apache به‌عنوان وب‌سرور برای وب‌میل و پنل‌ها، به‌همراه PHP.
  • OpenLDAP یا MariaDB یا MySQL یا PostgreSQL برای نگهداری دامنه‌ها، حساب‌ها و رمزها.
  • Amavisd-new به‌همراه SpamAssassin و ClamAV برای فیلتر هرزنامه و ویروس؛ امضای DKIM هم کار همین Amavis است.
  • iRedAPD که سیاست‌های Postfix را مدیریت می‌کند و iRedAdmin که پنل تحت وب مدیریت دامنه‌ها و کاربران است.
  • Roundcube به‌عنوان وب‌میل و به‌صورت اختیاری SOGo برای تقویم و دفترچه تماس اشتراکی.
  • Fail2ban برای بستن آی‌پی‌هایی که مدام رمز اشتباه می‌زنند، mlmmj برای لیست‌های پستی و Logwatch برای گزارش‌های دوره‌ای.

قبل از هر چیز: این پیش‌نیازها قابل مذاکره نیستند

بیشتر نصب‌های شکست‌خورده به‌خاطر رد شدن از روی همین فهرست است، نه به‌خاطر خود اسکریپت.

  • سیستم‌عامل پشتیبانی‌شده. نسخه ۱٫۸٫۴ روی اوبونتو فقط 24.04 و 26.04 را قبول می‌کند و روی هر نسخه دیگری با پیام «unsupported release» متوقف می‌شود. اگر سراغ توزیع دیگری می‌روید، Debian نسخه‌های ۱۲ و ۱۳ و از خانواده RHEL نسخه‌های ۹ و ۱۰ (AlmaLinux، Rocky Linux، CentOS Stream و RHEL) پشتیبانی می‌شوند. توصیه خود پروژه برای امروز Ubuntu 24.04 LTS است.
  • سرور باید تازه و دست‌نخورده باشد. اگر از قبل وب‌سرور، پایگاه داده یا هر سرویس ایمیلی روی سرور نصب کرده‌اید، نصب‌کننده یا متوقف می‌شود یا تنظیمات موجود را خراب می‌کند. روی سیستم‌عامل تازه‌نصب شروع کنید.
  • حداقل ۴ گیگابایت رم. مستندات رسمی برای یک میل سرور کم‌ترافیک با اسکن هرزنامه و ویروس همین عدد را الزامی می‌داند. دلیلش هم ClamAV و SpamAssassin هستند که حافظه زیادی می‌خورند. با رم کمتر نصب ممکن است تمام شود اما سرویس‌ها مدام کشته می‌شوند.
  • پورت ۲۵ خروجی باید باز باشد. این مهم‌ترین نکته‌ای است که معمولاً دیر فهمیده می‌شود: بسیاری از ارائه‌دهندگان ابری این پورت را به‌صورت پیش‌فرض روی سرورها می‌بندند و بدون آن سرور شما هیچ ایمیلی به بیرون نمی‌فرستد. پیش از شروع، وضعیت این پورت را از پشتیبانی سرویس‌دهنده خود بپرسید.
  • نام میزبان باید FQDN باشد، یعنی چیزی مثل mail.example.com؛ نه localhost و نه فقط mail.
  • شناسه کاربری ۲۰۰۰ آزاد باشد. iRedMail کاربر و گروه vmail را با UID و GID برابر 2000 می‌سازد؛ اگر این شناسه از قبل اشغال شده باشد به مشکل می‌خورید.
  • آی‌پی ثابت و تمیز. اگر آی‌پی سرور در فهرست‌های سیاه باشد، هر کاری هم بکنید ایمیل‌هایتان تحویل داده نمی‌شود. پیش از شروع آی‌پی را در سرویس‌هایی مثل mxtoolbox.com بررسی کنید و اگر آلوده بود، آی‌پی یا سرور دیگری بگیرید.

مرحله اول: رکوردهای DNS را از قبل بسازید

DNS را قبل از نصب تنظیم کنید تا هنگام گرفتن گواهی SSL معطل انتشار رکوردها نشوید. دو رکورد در این مرحله لازم است:

  • رکورد A برای mail.example.com که به آی‌پی سرور اشاره کند. اگر سرور IPv6 هم دارد، رکورد AAAA را هم اضافه کنید.
  • رکورد MX برای خود دامنه، با مقدار mail.example.com و اولویت (Priority) مثلاً 10.

دو نکته که زیاد اشتباه می‌شود: مقدار رکورد MX باید یک نام میزبان باشد، نه آدرس IP؛ و آن نام نباید خودش یک CNAME باشد. در عدد اولویت هم هرچه کمتر، ارجح‌تر.

رکورد PTR یا همان Reverse DNS را نمی‌توانید از پنل دامنه بسازید؛ آن را باید سرویس‌دهنده سرور برایتان روی آی‌پی ثبت کند. حتماً درخواستش را بدهید، چون بسیاری از سرورهای گیرنده ایمیلی را که PTR سالم ندارد رد می‌کنند. برای بررسی وضعیت فعلی:

dig -x SERVER_IP +short

مرحله دوم: نام میزبان را تنظیم کنید

ابتدا سیستم را به‌روز کنید:

apt update && apt -y upgrade

سپس نام میزبان را به شکل کامل تنظیم کنید:

hostnamectl set-hostname mail.example.com

حالا فایل /etc/hosts را باز کنید و مطمئن شوید خطی مثل زیر دارد که نام کامل پیش از نام کوتاه آمده باشد:

127.0.0.1 mail.example.com mail localhost

ترتیب این خط مهم است؛ اگر نام کوتاه اول بیاید، خروجی دستور بعدی ناقص می‌شود:

hostname -f

خروجی باید دقیقاً mail.example.com باشد. تا وقتی این‌طور نشده، نصب را شروع نکنید.

مرحله سوم: دانلود و اجرای iRedMail

پروژه مدتی است از Bitbucket به GitHub منتقل شده و فایل‌ها هم به‌جای tar.bz2 با فرمت tar.gz منتشر می‌شوند؛ آموزش‌های قدیمی هنوز نشانی و نسخه‌های قدیمی را تکرار می‌کنند. اول دو بسته لازم را نصب کنید:

apt -y install gzip dialog

بعد آخرین نسخه را بگیرید و باز کنید:

cd /root/
curl -LO https://github.com/iredmail/iRedMail/archive/refs/tags/1.8.4.tar.gz
tar zxf 1.8.4.tar.gz
cd /root/iRedMail-1.8.4/

و اسکریپت را اجرا کنید:

bash iRedMail.sh

نصب طولانی است. اگر ارتباط SSH وسط کار قطع شود اسکریپت هم کشته می‌شود، پس بهتر است کل کار را داخل یک نشست پایدار اجرا کنید:

screen -S mail

مرحله چهارم: انتخاب‌هایی که نصب‌کننده از شما می‌پرسد

iRedMail یک رابط متنی ساده باز می‌کند و چند سؤال می‌پرسد. با کلیدهای بالا و پایین جابه‌جا شوید، با Space انتخاب کنید و با Enter جلو بروید.

  • مسیر ذخیره ایمیل‌ها. پیش‌فرض /var/vmail است و برای اغلب موارد مناسب است. اگر دیسک جداگانه‌ای برای ایمیل‌ها دارید، همین‌جا مسیرش را بدهید.
  • وب‌سرور. بین Nginx و Apache یکی را انتخاب کنید.
  • محل نگهداری حساب‌ها. گزینه‌ها OpenLDAP، MariaDB، MySQL و PostgreSQL هستند. اگر تجربه خاصی ندارید، MariaDB ساده‌ترین انتخاب است. مهم این است که پایگاه داده‌ای را بردارید که با آن راحتید، چون بعداً برای بکاپ و عیب‌یابی با آن سروکار دارید.
  • رمز مدیر پایگاه داده و اولین دامنه ایمیل. برای دامنه، نام دامنه اصلی را بنویسید و نه نام میزبان؛ یعنی اگر می‌خواهید ایمیل‌ها به شکل info@example.com باشند، اینجا example.com را وارد کنید، نه mail.example.com. مراقب باشید فاصله اضافی جلو یا عقب نام دامنه جا نماند.
  • رمز مدیر دامنه و در آخر انتخاب اجزای اختیاری مثل وب‌میل و پنل مدیریت.

در پایان خلاصه تنظیمات را نشان می‌دهد؛ با Y تأیید کنید تا نصب شروع شود. بعد از اتمام هم یک‌بار دیگر برای اعمال قواعد فایروال تأیید می‌خواهد.

تمام اطلاعات مهم — از جمله نشانی پنل‌ها، نام کاربری‌ها و رکورد DKIM — در فایلی به نام iRedMail.tips داخل همان پوشه‌ای که نصب را از آن اجرا کردید ذخیره می‌شود:

/root/iRedMail-1.8.4/iRedMail.tips

این فایل رمزهای اولیه را هم دارد؛ بعد از اینکه اطلاعاتش را جای امنی منتقل کردید، حذفش کنید.

در آخر سرور را یک‌بار راه‌اندازی مجدد کنید:

reboot

مرحله پنجم: اولین ورود

بعد از بالا آمدن سرور، این نشانی‌ها در دسترس‌اند:

  • پنل مدیریت iRedAdmin: https://mail.example.com/iredadmin/
  • وب‌میل Roundcube: https://mail.example.com/mail/
  • گروه‌افزار SOGo (اگر نصبش کردید): https://mail.example.com/SOGo/

برای ورود اول به iRedAdmin از حساب postmaster@example.com و رمزی که هنگام نصب دادید استفاده کنید. در این مرحله مرورگر بابت گواهی خودامضا هشدار می‌دهد؛ مرحله بعد همین را درست می‌کند.

مرحله ششم: گواهی معتبر Let’s Encrypt

iRedMail موقع نصب یک گواهی خودامضا می‌سازد. با آن همه چیز کار می‌کند اما هم مرورگر و هم کلاینت‌های ایمیل به کاربر هشدار می‌دهند. جایگزینی‌اش با یک گواهی رایگان Let’s Encrypt چند دقیقه بیشتر طول نمی‌کشد.

روی اوبونتوی امروزی، certbot در مخزن خود سیستم‌عامل هست و دیگر لازم نیست PPA اضافه کنید — آن روش قدیمی که در آموزش‌های چند سال پیش تکرار می‌شود عملاً منسوخ شده است:

apt -y install certbot

چون تنظیمات وب‌سرور را iRedMail مدیریت می‌کند، گواهی را با روش webroot بگیرید و نه با افزونه‌های nginx یا apache:

certbot certonly --webroot -w /var/www/html -d mail.example.com --agree-tos -m you@example.com

حالا به سرویس‌ها اجازه خواندن فایل‌های گواهی را بدهید:

chmod 0755 /etc/letsencrypt/live /etc/letsencrypt/archive

سپس مسیرها را در تنظیمات هر سرویس عوض کنید. در /etc/postfix/main.cf:

smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem

در Dovecot دقت کنید که نام دستورها به نسخه بستگی دارد و همین‌جا اغلب اشتباه می‌شود. روی اوبونتو ۲۴٫۰۴ که Dovecot نسخه ۲٫۳ نصب می‌شود، در فایل /etc/dovecot/dovecot.conf این دو خط را با علامت کوچک‌تر ابتدایشان بنویسید:

ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem

اما روی اوبونتو ۲۶٫۰۴ و Debian 13 که Dovecot نسخه ۲٫۴ نصب می‌شود، نام این دستورها عوض شده و علامت کوچک‌تر هم ندارند:

ssl_server_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_server_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem

نوبت وب‌سرور است. اگر Nginx را انتخاب کرده بودید، همین دو مسیر را در فایل الگوی زیر جایگزین کنید:

/etc/nginx/templates/ssl.tmpl

و درستی تنظیمات را پیش از بارگذاری مجدد بسنجید:

nginx -t

اگر Apache را انتخاب کرده بودید، به‌جای آن فایل میزبان مجازی امن را باز کنید:

/etc/apache2/sites-available/default-ssl.conf

و دو خط گواهی را به این شکل درآورید:

SSLCertificateFile /etc/letsencrypt/live/mail.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mail.example.com/privkey.pem

و تنظیمات را بررسی کنید:

apache2ctl configtest

در پایان سرویس‌ها را بارگذاری مجدد کنید (نام وب‌سرور را متناسب با انتخاب خودتان بگذارید):

systemctl reload postfix dovecot nginx

تمدید خودکار گواهی

گواهی‌های Let’s Encrypt ۹۰ روز اعتبار دارند. خبر خوب اینکه بسته certbot خودش یک تایمر برای تمدید خودکار نصب می‌کند و لازم نیست مثل گذشته دستی cron بنویسید. فقط باید بگویید بعد از هر تمدید، سرویس‌ها گواهی تازه را بردارند. برای این کار یک فایل در مسیر hookهای certbot بسازید:

/etc/letsencrypt/renewal-hooks/deploy/reload-mail.sh

با این محتوا:

#!/bin/bash

systemctl reload postfix dovecot nginx

و اجرایی‌اش کنید:

chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-mail.sh

برای اطمینان از درست بودن کل مسیر، یک تمدید آزمایشی بگیرید:

certbot renew --dry-run

مرحله هفتم: رکوردهای SPF، DKIM و DMARC

تا این‌جا سرور کار می‌کند اما اگر این سه رکورد را نسازید، ایمیل‌هایتان با احتمال زیاد در پوشه اسپم گیرنده می‌نشینند.

SPF

SPF مشخص می‌کند چه سرورهایی حق دارند از طرف دامنه شما ایمیل بفرستند. یک رکورد TXT روی خود دامنه بسازید:

v=spf1 mx ~all

در اینجا mx یعنی هر سروری که در رکورد MX دامنه آمده مجاز است و ~all یعنی بقیه مشکوک‌اند.

DKIM

iRedMail هنگام نصب کلید DKIM را با Amavis می‌سازد؛ کاری که شما باید بکنید انتشار بخش عمومی آن در DNS است. کلید را با این دستور ببینید:

amavisd-new showkeys

همین کلید در فایل iRedMail.tips هم هست. یک رکورد TXT بسازید که نامش dkim._domainkey باشد و مقدارش همان چیزی که داخل پرانتز آمده — با حذف همه گیومه‌ها و فاصله‌ها و شکستگی خط‌ها، تا به یک رشته پیوسته تبدیل شود. بعد از انتشار، صحتش را بررسی کنید:

amavisd-new testkeys

DMARC

DMARC به سرور گیرنده می‌گوید با ایمیلی که SPF یا DKIM آن رد شد چه کند. یک رکورد TXT با نام _dmarc بسازید:

v=DMARC1; p=none; pct=100; rua=mailto:dmarc@example.com

مقدار p=none یعنی فعلاً فقط گزارش بگیر و چیزی را رد نکن. این حالت را چند هفته نگه دارید، گزارش‌ها را بخوانید و وقتی مطمئن شدید همه ایمیل‌های قانونی درست امضا می‌شوند، سیاست را به quarantine و بعد reject سخت‌تر کنید. سخت کردن زودهنگام این سیاست، ایمیل‌های خودتان را از دسترس خارج می‌کند.

مرحله هشتم: تنظیم کلاینت روی موبایل و کامپیوتر

برای اتصال با نرم‌افزارهایی مثل Thunderbird یا Outlook یا اپلیکیشن ایمیل موبایل، این مقادیر را بدهید:

  • سرور ورودی (IMAP): نام سرور mail.example.com، پورت 993 با رمزنگاری SSL/TLS.
  • سرور خروجی (SMTP): نام سرور mail.example.com، پورت 587 با رمزنگاری STARTTLS. پورت 465 با SSL/TLS هم کار می‌کند.
  • روش احراز هویت: رمز عبور عادی (Normal password) و نام کاربری، نشانی کامل ایمیل است.

مرحله نهم: قبل از اینکه به کسی ایمیل بزنید، تست کنید

به mail-tester.com بروید؛ یک نشانی ایمیل موقت به شما می‌دهد. از حساب تازه‌ساخته خودتان به آن نشانی ایمیل بفرستید و امتیاز بگیرید. این تست همه چیز را یک‌جا بررسی می‌کند: SPF، DKIM، DMARC، PTR، حضور آی‌پی در فهرست‌های سیاه و کیفیت خود پیام. تا وقتی امتیازتان نزدیک ۱۰ نشده، سرویس را برای کار جدی به کسی ندهید.

خطاهایی که واقعاً پیش می‌آید

  • نصب همان اول متوقف می‌شود و از FQDN گله می‌کند. یعنی خروجی hostname -f نام کامل نیست. به فایل /etc/hosts برگردید و ترتیب نام کامل و نام کوتاه را درست کنید.
  • ایمیل‌ها ارسال نمی‌شوند و در صف می‌مانند. تقریباً همیشه یعنی پورت ۲۵ خروجی بسته است. صف را با postqueue -p ببینید و دلیل دقیق را از /var/log/mail.log بخوانید.
  • ایمیل می‌رود ولی مستقیم در اسپم می‌نشیند. سراغ همان چهار مورد بروید: PTR، SPF، DKIM و DMARC. با mail-tester.com دقیقاً می‌فهمید کدام‌شان ایراد دارد.
  • کلاینت به سرور وصل نمی‌شود. اول مطمئن شوید سرویس بالاست: systemctl status dovecot و بعد اینکه فایروال پورت‌های 993 و 587 را باز گذاشته باشد.
  • بعد از تعویض گواهی، کلاینت‌ها هنوز هشدار می‌دهند. یعنی سرویس‌ها گواهی تازه را نخوانده‌اند؛ یک systemctl reload postfix dovecot بزنید و مطمئن شوید مسیرها را در فایل درست و متناسب با نسخه Dovecot نوشته‌اید.
  • ورود به پنل با رمز درست هم رد می‌شود. ممکن است Fail2ban آی‌پی شما را بعد از چند تلاش ناموفق بسته باشد. وضعیت را با fail2ban-client status ببینید.

نکات نگهداری

  • بکاپ. دو چیز را باید نگه دارید: پوشه ایمیل‌ها در /var/vmail و پایگاه داده حساب‌ها. iRedMail خودش اسکریپت‌های بکاپ را در مسیر /var/vmail/backup می‌گذارد، اما بکاپی که روی همان سرور بماند بکاپ نیست؛ آن را جای دیگری منتقل کنید.
  • به‌روزرسانی. بسته‌های سیستم‌عامل را مرتب به‌روز کنید. یک میل سرور رها‌شده خیلی زود تبدیل به ابزار ارسال هرزنامه می‌شود و آن‌وقت آی‌پی‌تان در فهرست سیاه می‌نشیند.
  • لاگ‌ها. وقتی ایمیلی نمی‌رود یا نمی‌آید، اولین جایی که باید نگاه کنید همین است: tail -f /var/log/mail.log

جمع‌بندی

راه‌اندازی میل سرور اختصاصی سخت نیست، اما نگه‌داشتنش کار می‌برد؛ کار اصلی هم نه نصب، که همان بخش تحویل‌پذیری است: پورت ۲۵ باز، PTR درست، SPF و DKIM و DMARC سالم و آی‌پی تمیز. اگر این چهار مورد را جدی بگیرید، سرویسی خواهید داشت که هم کامل در اختیار خودتان است و هم ایمیل‌هایش به صندوق ورودی می‌رسد.

اگر در هر مرحله به مشکل خوردید یا ترجیح می‌دهید نصب و کانفیگ را به ما بسپارید، با تیم پشتیبانی آنلاین سرور در تماس باشید.

ارسال نظر