فصل هفتم — قسمت هفتاد 🐧
Install Mail server
—————————
در قسمت قبل با MTA آشنا شدیم. اینجا یک قدم عملیتر میشویم و یک Mail Server ساده را با Postfix راهاندازی میکنیم.
————————-
1️⃣ ساختار کلی Mail Server
وقتی یک Email میفرستی، چند جزء میتوانند درگیر باشند:
MUA → MTA → MTA → MDA
📩 MUA — Mail User Agent
برنامهای که کاربر با آن Email را میخواند یا میفرستد.
مثلاً:
Thunderbird
Outlook
Webmail
یعنی رابط کاربر با سیستم Mail.
——————
🚚 MTA — Mail Transfer Agent
وظیفهاش انتقال Email بین Mail Serverها است.
مثلاً:
Postfix
Exim
Sendmail
OpenSMTPD
مثال:
MUA
↓
Postfix
↓
Internet
↓
Postfix مقص
———————-
📥 MDA — Mail Delivery Agent
وقتی Mail به سرور مقصد رسید، MDA آن را در محل مناسب Mailbox کاربر تحویل میدهد.
مثلاً:
MTA
↓
MDA
↓
Mailbox
———-
2️⃣ انتخاب MTA
در Linux چند MTA معروف داریم:
Postfix
Sendmail
Exim
OpenSMTPD
در این آموزش از:
⭐️ Postfix
استفاده میکنیم.
Postfix یکی از MTAهای معروف Linux است و برای ارسال و دریافت SMTP استفاده میشود.
——————————
3️⃣ نصب Postfix
در Red Hat / Fedora / AlmaLinux:
dnf install postfix
بعد سرویس را فعال و اجرا کن:
systemctl enable --now postfix
بررسی:
systemctl status postfix
——————
4️⃣ فایل تنظیمات Postfix
فایلی که باید بشناسی:
/etc/postfix/main.cf
⚠️ در جزوهات نوشته بودی:
/etc/postfix/main.cfg
درستش:
/etc/postfix/main.cf
5️⃣ inet_interfaces
در:
nano /etc/postfix/main.cf
گزینه:
inet_interfaces = all
یعنی Postfix روی تمام Interfaceهای شبکه سیستم گوش بدهد.
مثلاً اگر سرور چند IP داشته باشد:
eth0 → 192.168.1.10
eth1 → 10.0.0.10
با:
inet_interfaces = all
Postfix روی Interfaceهای مناسب سیستم Listen میکند.
🧠 برای سرور واقعی باید این تنظیم را با توجه به نیاز و مدل شبکه انجام داد؛ باز گذاشتن سرویس SMTP روی همه Interfaceها بدون تنظیمات امنیتی میتواند خطرناک باشد.
—————
6️⃣ پورت SMTP
پروتکل اصلی ارسال Mail:
SMTP
پورت استاندارد:
25
برای Submission معمولاً:
587
و SMTPS:
465
در این قسمت فعلاً مفهوم اصلی را با 25 یاد بگیر.
بررسی:
ss -lntp | grep :25
ممکن است ببینی:
LISTEN ... :25
یعنی Postfix روی پورت SMTP در حال Listen است.
————————
7️⃣ Firewall
اگر سرور باید از بیرون SMTP دریافت کند، پورت موردنظر باید در Firewall مجاز باشد.
مثلاً در سیستمهای دارای firewalld:
firewall-cmd --permanent --add-service=smtp
firewall-cmd --reload
بررسی:
firewall-cmd --list-services
——————
8️⃣ ارسال Email از Command Line
یکی از ابزارهای ساده:
s-nail
نصب:
dnf install s-nail
بعد میتوانی Mail بفرستی.
مثلاً:
echo "Hello from Linux" | mail -s "Test Mail" user@example.com
ساختار:
echo
↓
متن Email
↓
mail
↓
Postfix
↓
SMTP
——————
9️⃣ Mail محلی در Linux
یکی از بهترین تمرینها برای فهم Mail Server این است که اول Mail داخلی خود Linux را امتحان کنی.
مثلاً یک User بساز:
useradd ali
passwd ali
بعد:
echo "Hello Ali" | mail -s "Test" ali
اینجا Email از طریق Mail System محلی تحویل User میشود.
بعد با:
mail
میتوانی Mailهای محلی را ببینی.
—————
10️⃣ لاگ Mail را کجا ببینیم؟
یکی از مهمترین چیزها در عیبیابی Mail Server، Log است.
در Red Hat-basedها معمولاً:
/var/log/maillog
مثلاً:
tail -f /var/log/maillog
حالا در یک Terminal دیگر Mail بفرست:
echo "Test" | mail -s "Test Mail" ali
و در Terminal اول Log را ببین.
این فوقالعاده مهم است چون میتوانی ببینی:
Mail received
Mail queued
Mail delivered
Connection failed
Relay denied
Authentication failed
——————-
1️⃣1️⃣ در Debian/Ubuntu
ممکن است Mail Log را در این مسیر ببینی:
/var/log/mail.log
پس:
Red Hat
→ /var/log/maillog
Debian
→ /var/log/mail.log
————-
Install Mail server
—————————
در قسمت قبل با MTA آشنا شدیم. اینجا یک قدم عملیتر میشویم و یک Mail Server ساده را با Postfix راهاندازی میکنیم.
————————-
1️⃣ ساختار کلی Mail Server
وقتی یک Email میفرستی، چند جزء میتوانند درگیر باشند:
MUA → MTA → MTA → MDA
📩 MUA — Mail User Agent
برنامهای که کاربر با آن Email را میخواند یا میفرستد.
مثلاً:
Thunderbird
Outlook
Webmail
یعنی رابط کاربر با سیستم Mail.
——————
🚚 MTA — Mail Transfer Agent
وظیفهاش انتقال Email بین Mail Serverها است.
مثلاً:
Postfix
Exim
Sendmail
OpenSMTPD
مثال:
MUA
↓
Postfix
↓
Internet
↓
Postfix مقص
———————-
📥 MDA — Mail Delivery Agent
وقتی Mail به سرور مقصد رسید، MDA آن را در محل مناسب Mailbox کاربر تحویل میدهد.
مثلاً:
MTA
↓
MDA
↓
Mailbox
———-
2️⃣ انتخاب MTA
در Linux چند MTA معروف داریم:
Postfix
Sendmail
Exim
OpenSMTPD
در این آموزش از:
⭐️ Postfix
استفاده میکنیم.
Postfix یکی از MTAهای معروف Linux است و برای ارسال و دریافت SMTP استفاده میشود.
——————————
3️⃣ نصب Postfix
در Red Hat / Fedora / AlmaLinux:
dnf install postfix
بعد سرویس را فعال و اجرا کن:
systemctl enable --now postfix
بررسی:
systemctl status postfix
——————
4️⃣ فایل تنظیمات Postfix
فایلی که باید بشناسی:
/etc/postfix/main.cf
⚠️ در جزوهات نوشته بودی:
/etc/postfix/main.cfg
درستش:
/etc/postfix/main.cf
5️⃣ inet_interfaces
در:
nano /etc/postfix/main.cf
گزینه:
inet_interfaces = all
یعنی Postfix روی تمام Interfaceهای شبکه سیستم گوش بدهد.
مثلاً اگر سرور چند IP داشته باشد:
eth0 → 192.168.1.10
eth1 → 10.0.0.10
با:
inet_interfaces = all
Postfix روی Interfaceهای مناسب سیستم Listen میکند.
🧠 برای سرور واقعی باید این تنظیم را با توجه به نیاز و مدل شبکه انجام داد؛ باز گذاشتن سرویس SMTP روی همه Interfaceها بدون تنظیمات امنیتی میتواند خطرناک باشد.
—————
6️⃣ پورت SMTP
پروتکل اصلی ارسال Mail:
SMTP
پورت استاندارد:
25
برای Submission معمولاً:
587
و SMTPS:
465
در این قسمت فعلاً مفهوم اصلی را با 25 یاد بگیر.
بررسی:
ss -lntp | grep :25
ممکن است ببینی:
LISTEN ... :25
یعنی Postfix روی پورت SMTP در حال Listen است.
————————
7️⃣ Firewall
اگر سرور باید از بیرون SMTP دریافت کند، پورت موردنظر باید در Firewall مجاز باشد.
مثلاً در سیستمهای دارای firewalld:
firewall-cmd --permanent --add-service=smtp
firewall-cmd --reload
بررسی:
firewall-cmd --list-services
——————
8️⃣ ارسال Email از Command Line
یکی از ابزارهای ساده:
s-nail
نصب:
dnf install s-nail
بعد میتوانی Mail بفرستی.
مثلاً:
echo "Hello from Linux" | mail -s "Test Mail" user@example.com
ساختار:
echo
↓
متن Email
↓
↓
Postfix
↓
SMTP
——————
9️⃣ Mail محلی در Linux
یکی از بهترین تمرینها برای فهم Mail Server این است که اول Mail داخلی خود Linux را امتحان کنی.
مثلاً یک User بساز:
useradd ali
passwd ali
بعد:
echo "Hello Ali" | mail -s "Test" ali
اینجا Email از طریق Mail System محلی تحویل User میشود.
بعد با:
میتوانی Mailهای محلی را ببینی.
—————
10️⃣ لاگ Mail را کجا ببینیم؟
یکی از مهمترین چیزها در عیبیابی Mail Server، Log است.
در Red Hat-basedها معمولاً:
/var/log/maillog
مثلاً:
tail -f /var/log/maillog
حالا در یک Terminal دیگر Mail بفرست:
echo "Test" | mail -s "Test Mail" ali
و در Terminal اول Log را ببین.
این فوقالعاده مهم است چون میتوانی ببینی:
Mail received
Mail queued
Mail delivered
Connection failed
Relay denied
Authentication failed
——————-
1️⃣1️⃣ در Debian/Ubuntu
ممکن است Mail Log را در این مسیر ببینی:
/var/log/mail.log
پس:
Red Hat
→ /var/log/maillog
Debian
→ /var/log/mail.log
————-