當前位置:首頁 » 操作系統 » linuxpostfix

linuxpostfix

發布時間: 2025-03-13 14:58:00

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

熱點內容
誅心演算法題 發布:2025-03-17 16:30:00 瀏覽:397
磁吸介面和安卓介面哪個好用 發布:2025-03-17 16:29:54 瀏覽:458
編程經典思想 發布:2025-03-17 16:27:45 瀏覽:621
崩壞腳本 發布:2025-03-17 16:22:39 瀏覽:50
敦煌的密碼在哪裡 發布:2025-03-17 16:19:21 瀏覽:898
編譯器決定程序運行的操作系統 發布:2025-03-17 16:17:47 瀏覽:705
android單詞 發布:2025-03-17 16:05:31 瀏覽:544
小型公司erp伺服器固定ip 發布:2025-03-17 15:56:52 瀏覽:168
雲伺服器組網方案 發布:2025-03-17 15:45:40 瀏覽:414
php代理商 發布:2025-03-17 15:39:22 瀏覽:110