IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

如何利用Linode服務‧設置Postfix SMTP寄件伺服器

01. 之前已用AWS建立了Postfix郵件伺服器,但因為AWS預設封閉了埠位(port)25,所以只能用來收取而不能發送電郵。一個可行的方法是利用SMTP Relay,但SMTP Relay的限制,就是發送大量電郵時是需要付費的,另外就是需要在DNS中作出TXT設定。問題是為節省成本,我是用ddns.net這種免費的DNS服務,如要用TXT設定,那一樣就要付費了。

02. 由AWS轉為Linode服務,伺服器配置及位置都和AWS一樣,但成本卻由以前的USD10變成USD5。而我只是用AWS EC2中的Linux伺服器及S3服務,更重要是Linode是可以按要求開放埠位(port)25(只要您有方法確認SMTP伺服器不會用來發送垃圾郵件)。

03. 返回正題,依之前方法設置好Postfix郵件伺服器及Dovecot的IMAP協定,剩下的就只有SMTP伺服器部份。

04. 編輯『/etc/postfix/main.cf』檔案,加入以下內容,其中smtpd_tls_cert_file及smtpd_tls_key_file設定,應為TLS證書路徑,此可用Let’s Encrypt服務免費取得。而『smtpd_』一堆設定是用於Dovecot接收電郵使用,而『smtp_』一堆設定是用於發送電郵時的設定。

sudo nano /etc/postfix/main.cf
smtpd_tls_cert_file = /etc/letsencrypt/live/<MAIL_DOMAIN_NAME>/cert.pem
smtpd_tls_key_file = /etc/letsencrypt/live/<MAIL_DOMAIN_NAME>/privkey.pem
smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtpd_tls_security_level = may
smtpd_sasl_security_options = noanonymous noplaintext
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

smtp_tls_security_level = may
smtp_tls_loglevel = 1

05. 再次編輯『/etc/postfix/main.cf』檔案,加入以下內容。此目的是在Postfix郵件伺服器接收電郵時作出過濾垃圾電郵。

sudo nano /etc/postfix/main.cf
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, reject_unknown_helo_hostname, reject_unknown_client_hostname
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_sender_domain, reject_unknown_reverse_client_hostname, reject_unknown_client_hostname
smtpd_tls_CAfile = /etc/letsencrypt/live/<MAIL_DOMAIN_NAME>/fullchain.pem

05. 編輯『/etc/postfix/master.cf』檔案。更改或加入以下內容。

sudo nano /etc/postfix/master.cf
submission     inet     n    -    y    -    -    smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_tls_wrappermode=no
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth

smtps     inet  n       -       y       -       -       smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth


05. 重新啟動Postfix服務。

sudo systemctl restart postfix

06. 確認Linode接納您開放埠位(port)25的申請。

07. 在Linode防火牆對外開啟了埠位(port)25。而為免任何人士利用SMTP伺服器發送電郵,可在防火牆中,限制埠位(port)465、587使用。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *