راهاندازی سرور ایمیل اینترنتی کار حساسی است. اگر IP سرور reverse DNS (رکورد PTR) درستی نداشته باشد یا در فهرست سیاه باشد، ایمیلها به Gmail و Outlook نمیرسند. پیش از شروع، از ارائهدهندهی IP بخواهید PTR را روی mail.sahor.ir تنظیم کند.در این آموزش کاربران ایمیل همان کاربران لینوکسی سرور هستند. این روش برای سازمان کوچک سادهترین است.
۱. DNS
mail.sahor.ir. A 203.0.113.10
sahor.ir. MX 10 mail.sahor.ir.
sahor.ir. TXT "v=spf1 mx -all"
_dmarc.sahor.ir. TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@sahor.ir"رکورد DKIM را در مرحلهی ۵ میسازید.
۲. گواهی
sudo hostnamectl set-hostname mail.sahor.ir
sudo apt install -y certbot
sudo certbot certonly --standalone -d mail.sahor.ir۳. Postfix
sudo apt install -y postfix # choose "Internet Site", system mail name: sahor.irsudo postconf -e 'myhostname = mail.sahor.ir'
sudo postconf -e 'mydomain = sahor.ir'
sudo postconf -e 'myorigin = $mydomain'
sudo postconf -e 'mydestination = $myhostname, $mydomain, localhost'
sudo postconf -e 'home_mailbox = Maildir/'
sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.sahor.ir/fullchain.pem'
sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.sahor.ir/privkey.pem'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'
sudo postconf -e 'message_size_limit = 26214400'پورت 587 (submission) برای ارسال از برنامهی ایمیل کاربران است. در /etc/postfix/master.cf بخش submission را از comment خارج کنید و اینطور تنظیم کنید:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject۴. Dovecot
sudo apt install -y dovecot-imapd dovecot-lmtpd/etc/dovecot/conf.d/99-sahor.conf:
mail_location = maildir:~/Maildir
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.sahor.ir/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.sahor.ir/privkey.pem
ssl_min_protocol = TLSv1.2
disable_plaintext_auth = yes
auth_mechanisms = plain login
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}خط service auth همان سوکتی را میسازد که Postfix برای احراز هویت کاربران (SASL) از آن استفاده میکند. در Dovecot 2.4 (Ubuntu 26.04) نام چند گزینه تغییر کرده است. اگر doveconf -n خطا داد، پیام خطا نام جدید را میگوید.
sudo doveconf -n >/dev/null && sudo systemctl restart dovecot postfix
sudo ufw allow 25,587,993/tcp۵. DKIM با OpenDKIM
sudo apt install -y opendkim opendkim-tools
sudo mkdir -p /etc/opendkim/keys/sahor.ir
sudo opendkim-genkey -b 2048 -d sahor.ir -s mail -D /etc/opendkim/keys/sahor.ir
sudo chown -R opendkim:opendkim /etc/opendkim
sudo cat /etc/opendkim/keys/sahor.ir/mail.txt # publish as TXT mail._domainkey.sahor.irدر /etc/opendkim.conf این خطوط را تنظیم کنید. خط Socket قبلی را comment کنید، چون فقط یک Socket مجاز است:
Domain sahor.ir
Selector mail
KeyFile /etc/opendkim/keys/sahor.ir/mail.private
Socket inet:8891@127.0.0.1sudo postconf -e 'smtpd_milters = inet:127.0.0.1:8891'
sudo postconf -e 'non_smtpd_milters = $smtpd_milters'
sudo postconf -e 'milter_default_action = accept'
sudo systemctl restart opendkim postfix۶. کاربر و آزمایش
sudo adduser --shell /usr/sbin/nologin ali
echo "test body" | mail -s "test" ali@sahor.ir # needs: apt install mailutils
sudo ls /home/ali/Maildir/new/در برنامهی ایمیل: IMAP روی mail.sahor.ir:993 با SSL/TLS، و SMTP روی mail.sahor.ir:587 با STARTTLS و همان نام کاربری و رمز.
یک ایمیل به یک صندوق Gmail بفرستید و در «Show original» بررسی کنید که SPF، DKIM و DMARC هر سه PASS باشند.
۷. نگهداری
- لاگ:
journalctl -u postfix -fوsudo mailqبرای صف ارسال. - تمدید گواهی بعد از certbot:
echo 'systemctl reload postfix dovecot' | sudo tee /etc/letsencrypt/renewal-hooks/deploy/mail.sh && sudo chmod +x $_. - برای فیلتر اسپم ورودی، rspamd را اضافه کنید. یک سرور ایمیل بدون فیلتر اسپم در چند هفته پر از اسپم میشود.