溫馨提示×

如何在LNMP中設置郵件服務

小樊
32
2025-10-24 12:02:29
欄目: 編程語言

如何在LNMP中設置郵件服務

在LNMP(Linux+Nginx+MySQL+PHP)架構中設置郵件服務,需通過安裝MTA(郵件傳輸代理)、IMAP/POP3服務器及配置PHP郵件功能實現。以下是基于Postfix+Dovecot的經典配置流程(適用于Ubuntu/Debian系統,CentOS系統可將apt替換為yum):

1. 準備工作

  • 確保服務器已安裝LNMP環境(若未安裝,可參考官方文檔或一鍵包部署);
  • 注冊并配置域名(需解析MX記錄至服務器IP,如mail.yourdomain.com指向服務器公網IP);
  • 安裝SSL證書(可選但推薦,用于加密SMTP/IMAP/SMTPS連接,可使用Let’s Encrypt免費證書)。

2. 安裝必要軟件包

更新系統包列表并安裝Postfix(MTA)、Dovecot(IMAP/POP3)及郵件工具:

sudo apt update
sudo apt install postfix dovecot-core dovecot-imapd dovecot-lmtpd mailutils -y

安裝過程中,Postfix會提示選擇配置類型,選擇“Internet Site”(適用于公開郵件服務器),并填寫域名(如yourdomain.com)。

3. 配置Postfix(SMTP服務)

編輯Postfix主配置文件/etc/postfix/main.cf,修改以下關鍵參數:

sudo nano /etc/postfix/main.cf
  • 基礎標識
    myhostname = mail.yourdomain.com  # 郵件服務器主機名
    mydomain = yourdomain.com         # 郵件域名
    myorigin = $mydomain              # 發件人域名
    
  • 網絡設置
    inet_interfaces = all             # 監聽所有網絡接口
    inet_protocols = ipv4             # 僅使用IPv4(若需IPv6,可改為“all”)
    mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost  # 接收郵件的域名
    
  • 訪問控制
    mynetworks = 127.0.0.0/8 [::1]/128  # 允許本地網絡發送郵件
    home_mailbox = Maildir/             # 郵件存儲格式(Maildir,每用戶一個目錄)
    
  • 安全與認證
    smtpd_tls_security_level = may      # 啟用TLS(可選但推薦)
    smtpd_tls_cert_file = /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem  # SSL證書路徑
    smtpd_tls_key_file = /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem    # SSL私鑰路徑
    smtpd_sasl_auth_enable = yes        # 啟用SASL認證(需用戶密碼)
    smtpd_sasl_security_options = noanonymous  # 禁止匿名登錄
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination  # 限制接收規則
    

保存后重啟Postfix:

sudo systemctl restart postfix
sudo systemctl enable postfix  # 設置開機自啟

4. 配置Dovecot(IMAP/POP3服務)

編輯Dovecot主配置文件/etc/dovecot/dovecot.conf,確保以下參數存在:

sudo nano /etc/dovecot/dovecot.conf
mail_location = maildir:~/Maildir  # 郵件存儲路徑(與Postfix一致)
protocols = imap pop3              # 啟用IMAP/POP3協議

編輯SASL認證配置/etc/dovecot/conf.d/10-auth.conf,開啟密碼認證:

sudo nano /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes       # 禁止明文認證(強制使用加密)
auth_mechanisms = plain login      # 支持PLAIN(加密)和LOGIN(加密)機制

編輯IMAP/SMTP監聽配置/etc/dovecot/conf.d/10-master.conf,開啟LMTP(用于郵件投遞):

sudo nano /etc/dovecot/conf.d/10-master.conf
service lmtp {
  inet_listener lmtp {
    port = 24  # LMTP默認端口
  }
}

編輯SSL配置/etc/dovecot/conf.d/10-ssl.conf,啟用SSL:

sudo nano /etc/dovecot/conf.d/10-ssl.conf
ssl = yes
ssl_cert = </etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.yourdomain.com/privkey.pem

保存后重啟Dovecot:

sudo systemctl restart dovecot
sudo systemctl enable dovecot  # 設置開機自啟

5. 配置PHP郵件功能

若需通過PHP發送郵件(如WordPress找回密碼、站內通知),需修改PHP配置文件:

sudo nano /etc/php/7.4/fpm/php.ini  # 根據PHP版本調整路徑(如7.4/8.0)

找到sendmail_path參數,修改為:

sendmail_path = /usr/sbin/sendmail -t -i

保存后重啟PHP-FPM:

sudo systemctl restart php7.4-fpm

6. 測試郵件服務

  • 測試SMTP發送:使用telnet連接SMTP端口(25或587),手動發送測試郵件:
    telnet localhost 25
    HELO localhost
    MAIL FROM: <your-email@yourdomain.com>
    RCPT TO: <recipient@example.com>
    DATA
    Subject: Test Email
    This is a test email from your LNMP mail server.
    .
    QUIT
    
  • 測試IMAP/SMTP登錄:使用郵件客戶端(如Thunderbird、Outlook)配置賬戶:
    • SMTP:服務器mail.yourdomain.com,端口587,加密STARTTLS,用戶名your-email@yourdomain.com,密碼your-password;
    • IMAP:服務器mail.yourdomain.com,端口993,加密SSL/TLS,用戶名/密碼同上。

7. 防火墻配置

允許郵件服務端口通過防火墻(以UFW為例):

sudo ufw allow 25/tcp    # SMTP(郵件發送)
sudo ufw allow 143/tcp   # IMAP(郵件接收,明文)
sudo ufw allow 993/tcp   # IMAPS(郵件接收,加密)
sudo ufw allow 587/tcp   # Submission(郵件提交,加密)
sudo ufw allow 465/tcp   # SMTPS(郵件發送,加密)
sudo ufw enable          # 開啟防火墻

注意事項

  • 域名解析:確保MX記錄正確指向服務器IP(如mail.yourdomain.com的MX記錄值為服務器IP);
  • 反垃圾設置:建議安裝SpamAssassin或ClamAV,過濾垃圾郵件和病毒;
  • 備份數據:定期備份/var/mail/vhosts/(郵件存儲目錄)和Postfix/Dovecot配置文件;
  • 安全加固:禁用root遠程登錄、定期更新系統及軟件包、使用強密碼。

通過以上步驟,LNMP環境即可支持郵件發送與接收功能,滿足網站站內通知、用戶注冊等場景需求。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女