پرش به محتوا

ارسال ایمیل هشدار از سرور با Postfix (فقط ارسال)

سرور را طوری تنظیم کنید که هشدارهای سیستم (cron، RAID، بکاپ) را از طریق سرویس ایمیل سازمان بفرستد، بدون این‌که خودش سرور ایمیل عمومی شود.

Ubuntu 24.04 LTSسطح: متوسطبرای: Ubuntu 24.04 LTS، Ubuntu 26.04 LTS، Ubuntu 22.04 LTSبه‌روزرسانی: ۱۶ آبان ۱۴۰۵

بیشتر سرورها لازم نیست ایمیل دریافت کنند؛ فقط باید بتوانند هشدار بفرستند. ارسال مستقیم از IP سرور معمولاً به اسپم می‌رود. راه درست: ارسال از طریق سرور SMTP سازمان با احراز هویت.

۱. نصب

bash
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt install -y postfix libsasl2-modules mailutils

۲. پیکربندی relay

bash
sudo postconf -e 'relayhost = [mail.example.ir]:587'
sudo postconf -e 'smtp_sasl_auth_enable = yes'
sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
sudo postconf -e 'smtp_sasl_security_options = noanonymous'
sudo postconf -e 'smtp_tls_security_level = encrypt'
sudo postconf -e 'inet_interfaces = loopback-only'
sudo postconf -e 'mydestination = '

inet_interfaces = loopback-only تضمین می‌کند Postfix از شبکه هیچ ایمیلی نپذیرد.

۳. رمز حساب ارسال

bash
echo '[mail.example.ir]:587 alerts@example.ir:رمز-حساب' | sudo tee /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

۴. فرستنده‌ی یکسان

سرور SMTP معمولاً فقط اجازه می‌دهد با همان آدرس حساب ارسال کنید. همه‌ی فرستنده‌های محلی را به آن نگاشت کنید:

bash
echo '/.+/ alerts@example.ir' | sudo tee /etc/postfix/sender_canonical
sudo postconf -e 'sender_canonical_maps = regexp:/etc/postfix/sender_canonical'

ایمیل‌های root را هم به صندوق مدیر بفرستید:

bash
echo 'root: admin@example.ir' | sudo tee -a /etc/aliases
sudo newaliases
sudo systemctl restart postfix

۵. آزمایش

bash
echo "test from $(hostname)" | mail -s "Postfix relay test" admin@example.ir
sudo tail -n 20 /var/log/mail.log
mailq

در لاگ باید status=sent ببینید.