linuxpostfix
⑴ linux下安裝什麼郵件伺服器比較好
強烈建議你使用postfix,目前大多數linux教程書上都會提到postfix的安裝方法,可想而知postfix是主留。postfix的主要特點有:
1. postfix是免費的:
postfix想要作用的范圍是廣大的Internet用戶,試圖影響大多數的Internet上的電子郵件系統,因此它是免費的。
2. 更快:
postfix在性能上大約比sendmail快三倍。一部運行postfix的台式PC每天可以收發上百萬封郵件。
3. 兼容性好:
postfix是sendmail兼容的,從而使sendmail用戶可以很方便地遷移到postfix。Postfix支持/var[/spool]/mail、/etc/aliases、 NIS、和 ~/.forward 文件。
4. 更健壯:
postfix被設計成在重負荷之下仍然可以正常工作。當系統運行超出了可用的內存或磁碟空間時,postfix會自動減少運行進程的數目。當處理的郵件數目增長時,postfix運行的進程不會跟著增加。
5. 更靈活:
postfix是由超過一打的小程序組成的,每個程序完成特定的功能。你可以通過配置文件設置每個程序的運行參數。
6. 安全性
postfix具有多層防禦結構,可以有效地抵禦惡意入侵者。如大多數的postfix程序可以運行在較低的許可權之下,不可以通過網路訪問安全性相關的本地投遞程序等等。
⑵ linux入門系列17--郵件系統之Postfix和Dovecot
本文將引導您在Linux環境下構建郵件系統,使用Postfix和Dovecot實現區域網內的電子郵件收發功能。不同於Windows系統豐富的預裝工具,Linux下的Postfix和Dovecot提供了郵件發送和接收的核心服務。
電子郵件系統作為日常工作中的重要組成部分,其歷史可追溯至60年代的ARPANET項目。在互聯網早期,由於地理位置差異,科學家們需要一個能跨越時區的通信方式,這就是電子郵件的起源。郵件系統不像文件傳輸,它支持離線收發,就像語音信箱,即使用戶離線,郵件依然會被保存。
在Linux系統中,Postfix負責發送,使用SMTP協議,而Dovecot負責接收,通過POP3或IMAP4協議。郵件傳輸過程中涉及MUA(郵件用戶代理)、MTA(郵件傳輸代理)和MDA(郵件投遞代理)。以發送郵件為例,即使對方伺服器宕機,Postfix會暫存郵件,待對方恢復後投遞。
部署郵件系統時,首先需要在Centos7主機上規劃郵件系統架構,包括設置DNS伺服器,配置Postfix和Dovecot服務。Postfix的配置涉及到主機名、防火牆策略和DNS解析,Dovecot則要設置明文登錄和郵件存儲路徑。通過測試,可以使用mail命令、Outlook或Foxmail等客戶端驗證系統是否正常工作。
通過本文,您將理解郵件系統的核心組件和配置流程,並能在Linux環境中建立自己的電子郵件系統。接下來,我們將探討Apache服務如何搭建靜態web網站。
⑶ linux下的postfix郵件伺服器怎麼創建賬號
postfix創建郵件賬號命令:
useradd-gmail-s/sbin/nologinuser
配置好郵件伺服器後,重啟dovecot服務。
/etc/init.d/dovecotstart
然後測試,發送接收郵件!
⑷ 用linux系統搭建postfix郵件伺服器,但是區域網可以實現互發郵件,不能給其他的公網郵箱互發郵件,求解
快速配置Postfix郵件伺服器
Postfix最被人稱道的地方就在於其配置文件的可讀性很高。Postfix的主配置文件是/etc/postfix/main.cf。
在main.cf文件中,參數都是以類似變數的設置方法來設置的,這些參數的使用主要包含兩部分的內容:
(1)定義和聲明變數:例如definename = good-better-best。等號左邊是變數的名稱,等號右邊是變數的值。
(2)引用變數:可以在變數的前面加上符號「$」來引用該變數,如:myname = $ definename(相當於definename = good-better-best)。
需要注意的是:等號兩邊需要有空格字元。此外,如果變數有兩個以上的設置值,就必須用逗號「,」或者空格符「 」將它們分開。
在熟悉了上述變數的定義和引用方法後,下面詳細介紹如何安全、高效地配置Postfix伺服器的相關選項。
1.設置Postfix服務監聽的網路介面
默認情況下,inet_interfaces參數的值被設置為localhost,這表明只能在本地郵件主機上寄信。如果郵件主機上有多個網路介面,而又不想使全部的網路介面都開放Postfix服務,就可以用主機名指定需要開放的網路介面。不過,通常是將所有的網路介面都開放,以便接收從任何網路介面來的郵件,即將inet_interfaces參數的值設置為「all」,如下所示:
inet_interfaces = all
2.安全設置可接收郵件的主機名稱或域名
mydestination參數非常重要,因為只有當發來的郵件的收件人地址與該參數值相匹配時,Postfix才會將該郵件接收下來。通過該選項的設置可以過濾掉許多沒有經過認證和授權的郵件,從而節省伺服器的存儲空間,以及節省用戶的郵件處理時間。
舉一個簡單的例子,用戶可以將該參數值設置為如下:
accept_domain = test.net
mydestination = $accept_domain
這就表明無論來信的收件人地址是[email protected](其中X表示某用戶在test.net域中的郵件賬戶名),Postfix都會接收這些郵件。而除此之外的郵件,Postfix都不會接受。
3.安全設置可轉發郵件的網路(IP設置)
有關安全設置可轉發郵件的網路可以使用mynetworks參數來設置。可將該參數值設置為所信任的某台主機的IP地址,也可設置為所信任的某個IP子網或多個IP子網(採用「,」或者「 」分隔)。
比如,用戶可以將mynetworks參數值設置為172.168.96.0/24,則表示這台郵件主機只轉發子網172.168.96.0/24中的客戶端所發來的郵件,而拒絕為其他子網轉發郵件:
mynetworks = 172.168.96.0/24
除了mynetworks參數外,還有一個用於控制網路郵件轉發的參數是mynetworks-style,它主要用來設置可轉發郵件網路的方式。通常有以下三種方式:
(1)class:在這種方式下,Postfix會自動根據郵件主機的IP地址得知它所在的IP網路類型(即A類、B類或是C類),從而開放的它所在的IP網段。
(2)subnet:這是postfix的默認值,postfix會根據郵件主機的網路介面上所設置的IP地址、子網掩碼來得知所要開放的IP網段。
(3)host:在這種方式下,postfix只會開放本機。
通常,用戶一般不需要設置mynetworks-style參數,而直接設置mynetworks參數。如果這兩個參數都進行了設置,那麼mynetworks參數的設置有效。
4.設置可轉發郵件的網路(域名設置)
上面介紹的mynetworks參數是針對郵件來源的IP來設置的,而relay_domains參數則是針對郵件來源的域名或主機名來設置的,其實從原理上來說是一致的,不過是區分了IP地址和域名而已,不過,relay_domains還需要依賴DNS這個基礎設施。
例如,用戶可以將relay_domains參數值設置為test.net,則表示任何由域test.net發來的郵件都會被認為是信任的,Postfix會自動對這些郵件進行轉發,如下所示:
relay_domains = test.net
那麼,要使它能在實際網路中更好地轉發郵件,還必須進行相應的DNS設置。那麼,需要在該網路的DNS伺服器上定義了一個主區域test.net,並在該區域配置文件中定義了以下記錄:
//定義郵件伺服器的IP地址
patterson.test.net. IN A 172.168.96.254
//定義郵件伺服器的別名
mail.test.net. IN CNAME patterson.test.net.
//定義優先順序別
test.net. IN MX 10 mail.test.net.
上述記錄只對郵件伺服器進行了定義,還有諸如SOA、NS等的定義,在這里就不再贅述。
配置Postfix使用SMTP安全認證
Postfix默認不會對外開放轉發功能,而僅對本機(localhost)開放轉發功能。但是,在實際應用中,必須在Postfix主配置文件中通過設置mynetworks、relay_domains參數來開放一些所信任的網段或網域,否則該郵件伺服器幾乎沒有什麼用處。在開放了這些所信任的網段或網域後,還可以通過設置SMTP認證,對要求轉發郵件的客戶端進行用戶身份(用戶賬戶名與密碼)驗證。只有通過了驗證,才能接收該用戶寄來的郵件並幫助轉發。同樣,Postfix中目前比較常用的SMTP認證機制是通過Cyrus SASL包來實現的。
默認情況下,Postfix並沒有啟用SMTP認證機制。要讓Postfix啟用SMTP認證,就必須對Postfix的主配置文件/etc/postfix/main.cf進行修改。用戶需要在main.cf文件中添加如下有關SMTP認證的設置部分:
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = ''
smtpd_recipient_restrictions = permit_mynetworks
permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients=yes
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_security_options = noanonymous
其中,每個選項的具體含義如下:
(1)smtpd_sasl_auth_enable:指定是否要啟用SASL作為SMTP認證方式。默認不啟用,這里必須將它啟用,所以要將該參數值設置為yes。
(2)smtpd_sasl_local_domain:如果採用Cyrus-SASL版進行認證,那麼這里不做設置。
(3)smtpd_recipient_restrictions:表示通過收件人地址對客戶端發來的郵件進行過濾。通常有以下幾種限制規則:
permit_mynetworks:表示只要是收件人地址位於mynetworks參數中指定的網段就可以被轉發郵件。
permit_sasl_authenticated:表示允許轉發通過SASL認證的郵件。
reject_unauth_destination:表示拒絕轉發含未信任的目標地址的郵件。
(4)broken_sasl_auth_clients:表示是否兼容非標準的SMTP認證。有一些Microsoft的SMTP客戶端採用非標準的SMTP認證協議,只需將該參數設置為yes就可解決這類不兼容問題。
(5)smtpd_client_restrictions:表示限制可以向Postfix發起SMTP連接的客戶端。如果要禁止未經過認證的客戶端向Postfix發起SMTP連接,則可將該參數值設置為permit_sasl_authenticated。
(6)smtpd_sasl_security_options:用來限制某些登錄的方式。如果將該參數值設置為noanonymous,則表示禁止採用匿名登錄方式。
在完成上述設置後,必須使用
/etc/init.d/postfix reload
重新載入配置文件,或使用
/etc/init.d/postfix restart
重新啟動Postfix服務,以使該配置生效。這兩個命令的具體使用需要根據不同的Linux版本來選用。
此外,由於當Postfix要使用SMTP認證時,會讀取/usr/lib/sasl2/smtpd.conf文件中的內容,以確定所採用的認證方式,因此如果要使用saslauthd這個守護進程來進行密碼認證,就必須確保/usr/lib/sasl2/smtpd.conf文件中的內容為:
pwcheck_method: saslauthd
⑸ Linux系統下安裝配置postfix郵件伺服器的教程
一,安裝postfix,cyrus-sasl,cyrus-imapd
如果yum提示找不到軟體包,請換一下源,請參考centos 6推薦使用epel源
[root@localhost ~]# yum install postfix
[root@localhost ~]# yum install cyrus*
二,刪除了sendmail
[root@localhost ~]# rpm -e sendmail
或者
復制代碼代碼如下:
[root@localhost ~]# yum remove sendmail
三,更改默認郵件傳輸代理(MTA)
[root@localhost sasl2]# alternatives --config mta
共有 1 個程序提供「mta」。
選擇 命令
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.postfix
按 Enter 來保存當前選擇[+],或鍵入選擇號碼:1
上面的只有一個postfix,sendmail已經被我刪了。可以通過下面命令來查看。
復制代碼代碼如下:
[root@localhost ~]# alternatives --display mta
四,postfix,cyrus-sasl,cyrus-imapd相關配置
1,postfix主配置文件main.cf
[root@localhost postfix]# vim /etc/postfix/main.cf
myhostname = localhost //76行,將等號後面的部分改寫為本機主機名
mydomain = 51yip.com //82行,設置域名
myorigin = $mydomain //97行,把$myhostname改為$mydomain
inet_interfaces = all //112行,把後面的localhost改成all
mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain //163行,把前面的注釋拿掉,並加一下$mydomain
mynetworks = 192.168.0.0/24, 127.0.0.0/8 //263行,設置內網和本地IP
local_recipient_maps = //209行,把前面的注釋拿掉。
smtpd_banner = $myhostname ESMTP unknow //568行,把前面的注釋拿掉,然後把$mail_name ($mail_version)改成unknow
//在main.cf文件的底部加上以下內容
smtpd_sasl_auth_enable = yes //使用SMTP認證
broken_sasl_auth_clients = yes //讓不支持RFC2554的smtpclient也可以跟postfix做交互。
smtpd_sasl_local_domain = $myhostname // 指定SMTP認證的本地域名
smtpd_sasl_security_options = noanonymous //取消匿名登陸方式
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination //設定郵件中有關收件人部分的限制
smtpd_sasl_security_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination //設置允許范圍
message_size_limit = 15728640 //郵件大小
mailbox_transport=lmtp:unix:/var/lib/imap/socket/lmtp //設置連接cyrus-imapd的路徑
如果不加local_recipient_maps這個配置,收郵件收不到,下面是qq的退信。
收件人郵件地址([email protected])不存在,郵件無法送達。host mail.51yip.com[122.225.***.***] said: 550 5.1.1: Recipient address rejected: User unknown in local recipient table (in reply to RCPT TO command)
2,cyrus-sasl配置
[root@localhost postfix]# vim /etc/sasl2/smtpd.conf //在文件尾部加上以下內容
log_level: 3 //記錄log的模式
saslauthd_path:/var/run/saslauthd/mux //設置一下smtp尋找cyrus-sasl的路徑,在這里要提一下的32位的機器和64位的機器smtpd.conf的路徑是不一樣的。
//這是centos 5.5 32位機器上smtpd的配置文件
[root@linux sasl2]# ls |grep conf
Sendmail.conf
smtpd.conf
[root@linux sasl2]# pwd
/usr/lib/sasl2
//這是centos 6.0 64位機器上smtpd的配置文件,其他地方沒有smtpd的配置文件
[root@localhost postfix]# ls /etc/sasl2/ |grep smtpd
smtpd.conf
網上有不少關於postfix安裝文章,配置的時候並沒有明確提出是32位機器,還是64位機器。所以在這里標明一下。
3,配置cyrus-imapd
cyrus-imapd的主要配置文件有下面三個
這里是默認的配置,也就是說上面三個文件我是沒有動過的。在這里提醒一下imapd.conf在這個文件裡面,你可以設置管理賬號
,設置郵件存放目錄,設置密碼連接方式等。
五,啟動postfix,cyrus-sasl,cyrus-imapd
啟動cyrus-imapd服務,就可以同時提供pop和imap服務,如果你已安裝了dovecot服務就可以刪除掉,cyrus-imapd和dovecot二者選其一就行了,二都可以提供pop和imap服務,不過cyrus-imapd可以為每個用戶創建一個信息,而且信箱具有層次結構,比較好管理。建議用cyrus-imapd。
[root@linux sasl2]# /etc/init.d/postfix start
[root@linux sasl2]# /etc/init.d/saslauthd start
[root@linux sasl2]# /etc/init.d/cyrus-imapd start
查看一下進程,
復制代碼代碼如下:
//smtp監聽是25埠
[root@linux u]# netstat -tpnl |grep smtpd
tcp 0 0 127.0.0.1:25復制代碼代碼如下:
/etc/sysconfig/cyrus-imapd
/etc/cyrus.conf
/etc/imapd.conf
0.0.0.0:* LISTEN 6319/smtpd
//110(POP3)和143(IMAP)埠,下面都已經有了
[root@linux u]# netstat -tpnl |grep cyrus
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 23593/cyrus-master
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 23593/cyrus-master
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 23593/cyrus-master
tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 23593/cyrus-master
tcp 0 0 :::993 :::* LISTEN 23593/cyrus-master
tcp 0 0 :::995 :::* LISTEN 23593/cyrus-master
tcp 0 0 :::110 :::* LISTEN 23593/cyrus-master
tcp 0 0 :::143 :::* LISTEN 23593/cyrus-master
tcp 0 0 :::2000 :::* LISTEN 23593/cyrus-master
啟動是沒有問題的。
六,測試cyrus-sasl
[root@linux t]# passwd cyrus //設置cyrus的密碼
[root@linux sasl2]# testsaslauthd -u cyrus -p '******' //系統用戶和密碼
0: OK "Success."
如果顯示是上面的內容說是smtp是沒有什麼問題
七,cyrus-imapd生產郵件管理員賬號,並添加測試賬號
安裝完cyrus-imapd後會產生一個管理賬號是cyrus,所屬用戶組是mail
[root@linux sasl2]# id cyrus //imapd.conf裡面默認的管理員賬號就是cyrus
uid=76(cyrus) gid=12(mail) groups=12(mail),76(saslauth)
在認證admin賬號時,我發現32位系統和64位系統有一點不同,二種系統我都配置過,配置都是一樣的,
但是出現的結果不一樣,看下圖
32位機器cyrus管理員用戶認證
64位機器cyrus管理員用戶認證
從上圖可以看出,32位的系統是不用加上--auth plain,64位的要,如果不加的話,根本進不去。
進去後,我們來添加一下測試賬號
[root@linux sasl2]# cyradm -u cyrus localhost
IMAP Password:
localhost> cm tank
localhost> lm
tank (HasNoChildren)
localhost> quit
這樣我們可以在/var/spool/imap中看到,生成的目錄,32位機器和64位機器生成的目錄是不一樣的
復制代碼代碼如下:
//這是64位系統生成的目錄
[root@localhost u]# ls
user^tank
[root@localhost u]# pwd
/var/spool/imap/u
//這是32位系統生成的目錄
[root@linux t]# ls
tank
[root@linux t]# pwd
/var/spool/imap/t
八,測試收發郵件
測試前添加一下DNS,
1,mail.51yip.com A 默認 122.225.***.***
2,mail.51yip.com A 聯通 60.12.***.***
3,@ MX 默認 mail.51yip.com
第1和第2,是添加二條A記錄,第三行,設置了一下MX記錄,這個千萬不要忘了,不然你的域名是不通的。
方法有很多,我們可以利用telnet來測試,不過用telnet來測試收發郵件比較麻煩,用linux自帶的
mail命令就方便多了
[root@localhost u]# mail -s '看一下' [email protected] < /etc/imapd.conf