用linu系統搭建postfi郵件伺服器但是區域網可

2021-04-24 10:21:04 字數 4360 閱讀 7888

1樓:匿名使用者

你的區域網內可以發郵件,是不是你的dns指向的問題。/etc/resolv.conf的nameserver是不是不能解析外面的域名啊

2樓:黎明玥

快速配置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_inte***ces引數的值被設定為localhost,這表明只能在本地郵件主機上寄信。如果郵件主機上有多個網路介面,而又不想使全部的網路介面都開放postfix服務,就可以用主機名指定需要開放的網路介面。不過,通常是將所有的網路介面都開放,以便接收從任何網路介面來的郵件,即將inet_inte***ces引數的值設定為「all」,如下所示:

inet_inte***ces = 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

如何在linu搭建完整的web伺服器

方法bai一 安裝linux下的xampp,假如du你不能離開管理工具,不習zhi慣命令dao的話。http apachefriends.en xampp linux.html 方法二 單獨安專裝包。如 最簡單的bai 方式就du是在linux中安裝zhixamp包,可以到這裡下dao載,直接 版執...

怎樣用linu命令知道系統是ubuntu還是redhat或者其

伺服器的作業系統是windows還是linux?只需要一行命令即可知道?ctrl alt f1切換到控制檯1看看系統版本,然後再alt f7回到圖形介面。1 第一種方法 lsb release a lsb version core 4.0 ia32 core 4.0 noarch graphics ...

用linu和mysql做登陸系統輸入使用者名稱和密碼

mysql uroot p11111 hlocalhost在這個命令中,選項與引數沒有空格,比如 u和root是粘在一起的root不用講了 111111是密碼 localhost是表示連到本機的mysql 1 前臺將使用者名稱和密碼傳到後臺 2 後臺根據使用者名稱和密碼查詢資料庫裡的使用者表 3 如...