1. 請教postfix 發不出郵件
postfix 是SMTP軟體
centos安裝了Postfix後啟動程序 如果在伺服器上直接使用mail 命令即可發送 比如:mail -s 「test」 [email protected] 本地測試使用telnet到伺服器的25埠 輸入賬號和密碼
2. win7怎麼安裝postfix郵件系統
方法/步驟
1、安裝 Postfix
2、配置Postfix,vi編輯main.cf
vi /etc/postfix/main.cf
3.打開後分別找到以下幾項,將其前面的#去掉,並做配置:
myhostname = mail.wpdaxue.com
mydomain = wpdaxue.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname,
localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.100.10/28, 127.0.0.0/8
relay_domains = home_mailbox = Maildir/
以上幾個設置項不在同一個位置,需要分別尋找,並進行更改,其中相應的域名請改為自己的地址,mynetworks我是沒有做改變,自動就有的。
4、檢測並啟動Postfix
service postfix status
//檢測,若已啟動會列出其PID,如下: master (pid 25579) is running...
//若未啟動,執行以下命令:
service postfix start
5
5、設置開機啟動
chkconfig postfix on
6
6.我自己的安裝到此為止就結束了,因為我只需要的是mail功能,並非搭建郵件伺服器。此時測試郵件發送,OK。
3. postfix發送郵件收不到郵件
命令行是 mail -s [email protected] 這樣的
看下日子 /var/log/maillog
4. linux下如何安裝郵件系統postfixlinux下如何對郵件系統postfix設置
postfix的安裝過程
3.1原始碼包的安裝
1. 獲取postfix的原始碼包
從postfix官方站點www.postfix.org取得postfix的原始碼包postfix-19991231-pl08.tar.gz。將其拷貝到/tmp
2.解開原始碼包,將生成/tmp/ postfix-19991231-pl08目錄。
tar xvzf postfix-19991231-pl08.tar.gz
3.編譯原始碼包
cd /tmp/ postfix-19991231-pl08
make
4.建立一個新用戶「postfix」,該用戶必須具有唯一的用戶id和組id號,同時應該讓該用戶不能登錄到系統,也即不為該用戶指定可執行的登錄外殼程式和可用的用戶宿主目錄。我們能先用adser postfix 添加用戶再編輯/etc/passwd文件中的相關條目如下所示:
postfix:*:12345:12345:postfix:/no/where:/no/shell
5.確定/etc/aliases文件中包含如下的條目:
postfix: root
6. 以root用戶登錄,在/tmp/ postfix-19991231-pl08目錄下執行命令:
./install.sh
7. 啟動postfix
# postfix start
8.關於maildrop目錄許可權的說明:
postfix能使用一個所有用戶都可寫的(也即目錄許可權為1773)的maildrop
目錄來讓本地用戶提交郵件。這種方法避免了使用set-uid 或 set-gid 軟體,並且在郵件系統不可用時,用戶仍然能提交郵件。其他用戶沒有訪問該目錄中的隊列文件的許可權。接收來自網路的郵件時postfix不使用maildrop目錄。不過,由於該目錄的許可權是733,其他用戶能建立一個硬連接到該目錄中的文件從而導致該郵件被投遞多次或無法刪除,也就是說這將導致安全性問題。如果你想要使用這種方式來讓用戶提交郵件,就要在install.sh 腳本問你是否需要set-gid 時回答no。
如果你的系統有多個用戶的話,最佳取消以上的方式而採用利用set-gid 用
戶許可權提交郵件的方式。這時,我們首先需要建立一個組id唯一的組"maildrop" 並且確定該組中沒有用戶成員。然後在install.sh 問你是否需要set-gid 時指定"maildrop"。
提示:在安裝postfix之前,請刪除已安裝的sendmail。
3.2 rpm包的安裝
1. 獲取postfix的rpm軟體包。
我們能從http://www.alltrading.es/postfix/rpms/i386/ 獲得postfix的rpm軟體包。當前的最新版本是postfix-20000531-2.i386.rpm。
2. 備份你的/etc/aliases和/etc/aliases.db,因為postfix要使用該別名資料庫。
3. 用以下命令查看系統是否安裝了sendmail:
[root@mail /root]# rpm -qa |grep sendmail
sendmail-doc-8.9.3-15
sendmail-8.9.3-15
sendmail-cf-8.9.3-15
4. 用以下命令強行卸載sendmail:
[root@mail /root]# rpm -e sendmail sendmail-cf sendmail-doc --nodeps
5. 用以下命令殺死運行中的sendmail進程:
[root@mail /root]# killall sendmail
6. 安裝postfix:
7. 啟動postfix
[root@mail /root]# /etc/rc.d/init.d/postfix start
3.3 設置系統每次啟動時自動啟動postfix
1.如果你安裝的是postfix的原始碼包,能在/etc/rc.d/rc.local文件中加入如下的語句讓系統每次啟動時自動啟動postfix:
if [ -f /usr/libexec/postfix ]; then
/usr/libexec/postfix start
fi
2.如果你安裝的是postfix的rpm包,能通過setup命令來設置在系統啟動時啟動postfix。
四、 postfix的設置詳解
4.1 postfix的設置文件結構
postfix的設置文件位於/etc/postfix下,安裝完postfix以後,我們能通過ls命令查看postfix的設置文件:
[root@mail postfix]# ls
install.cf main.cf master.cf postfix-script
這四個文件就是postfix最基本的設置文件,他們的差別在於:
mail.cf:是postfix主要的設置文件。
install.cf:包含安裝過程中安裝程式產生的postfix初始化設置。
master.cf:是postfix的master進程的設置文件,該文件中的每一行都是用來設置postfix的組件進程的運行方式。
postfix-script:包裝了一些postfix命令,以便我們在linux環境中安全地執行這些postfix命令。
4.2 postfix的基本設置
postfix大約有100個設置參數,這些參數都能通過main.cf 指定。設置的格式是這樣的,用等號連接參數和參數的值。如:
myhostname = mail.mydomain.com
等號的左邊是參數的名稱,等號的右邊是參數的值; 當然,我們也能在參數的前面加上$來引用該參數,如:
myorigin = $myhostname
雖然postfix有100個左右的參數,不過postfix為大多數的參數都設置了預設值,所以在讓postfix正常為你服務之前,你只需要設置為數不多的幾個參數。下面我們一起來看一看這些基本的postfix參數。需要注意的是,一旦你更改了main.cf文件的內容,則必須運行postfix reload命令使其生效。
1. myorigin
myorigin參數指明發件人所在的域名。如果你的用戶的郵件地址為[email protected],則該參數指定@後面的域名。預設地,postfix使用本地主機名作為myorigin,不過建議你最佳使用你的域名,因為這樣更具有可讀性。比如:安裝postfix的主機為mail.domain.com則我們能這樣指定myorigin:
myorigin = domain.com
當然我們也能引用其他參數,如:
myorigin = $mydomain
2. mydestination
mydestination參數指定postfix接收郵件時收件人的域名,換句話說,也就
是你的postfix系統要接收什麼樣的郵件。比如:你的用戶的郵件地址為[email protected], 也就是你的域為domain.com, 則你就需要接收所有收件人為[email protected]的郵件。和myorigin相同,預設地,postfix使用本地主機名作為mydestination。
3. notify_classes
在postfix系統中,必須指定一個postfix系統管理員的別名指向一個用戶,
只有這樣,在用戶遇見問題時才有報告的對象,postfix也才能將系統的問題報告給管理員。notify_classes參數就是用來指定向postfix管理員報告錯誤時的信息級別。共有以下幾種級別:
bounce:將不能投遞的郵件的拷貝發送給postfix管理員。出於個人隱私的緣故,該郵件的拷貝不包含信頭。
2bounce:將兩次不可投遞的郵件拷貝發送給postfix管理員。
delay:將郵件的投遞延遲信息發送給管理員,僅僅包含信頭。
policy:將由於uce規則限制而被拒絕的用戶請求發送給postfix管理員,包含整個smtp會話的內容。
protocol:將協議的錯誤信息或用戶企圖執行不支持的命令的記錄發送給postfix管理員。同樣包含整個smtp會話的內容。
resource:將由於資源錯誤而不可投遞的錯誤信息發送給postfix管理員,比如:隊列文件寫錯誤等等。
software:將由於軟體錯誤而導致不可投遞的錯誤信息發送給postfix管理員。
預設值為:
notify_classes = resource, software
4.myhostname
myhostname 參數指定運行postfix郵件系統的主機的主機名。預設地,該值被設定為本地機器名。你也能指定該值,需要注意的是,要指定完整的主機名。如:
myhostname = mail.domain.com
5.mydomain
mydomain參數指定你的域名,預設地,postfix將myhostname的第一部分刪除而作為mydomain的值。你也能自己指定該值,
6.mynetworks
mynetworks 參數指定你所在的網路的網路地址,postfix系統根據其值來差別用戶是遠程的還是本地的,如果是本地網路用戶則允許其訪問。你能用標準的a、b、c類網路地址,也能用cidr(無類域間路由)地址來表示,
7.inet_interfaces
inet_interfaces 參數指定postfix系統監聽的網路介面。預設地,postfix監聽
所有的網路介面。如果你的postfix運行在一個虛擬的ip地址上,則必須指定其監聽的地址。
4.3 postfix的uce(unsolicited commercial email)控制
所謂uce控制就是指控制postfix接收或轉發來自於什麼地方的郵件。
預設地,postfix轉發符合以下條件的郵件:
* 來自客戶端ip地址符合$mynetworks的郵件。
* 來自客戶端主機名符合$relay_domains及其子域的郵件。
* 目的地為$relay_domains及其子域的郵件。
預設地,postfix接受符合以下條件的郵件:
* 目的地為$inet_interfaces的郵件。
* 目的地為$mydestination的郵件。
* 目的地為$virtual_maps的郵件。
不過我們也能通過下面的規則來實現更強大的控制功能。
1. 信頭過濾
通過header_checks參數限制接收郵件的信頭的格式,如果符合指定的格式,則拒絕接收該郵件。能指定一個或多個查詢列表,如果新郵件的信頭符合列表中的某一項則拒絕該接收郵件。
2.客戶端主機名/地址限制
通過smtpd_client_restrictions參數限制能向postfix發起smtp 連接的客戶端的主機名或ip地址。能指定一個或多個參數值,中間用逗號隔開。限制規則是按照查詢的順序進行的,第一條符合條件的規則被執行。
3. 是否請求helo命令
能通過smtpd_helo_required參數指定客戶端在smtp會話的開始是否發
送一個helo命令。你能指定該參數的值為yes或no。
4. helo主機名限制
能通過smtpd_helo_restrictions參數指定客戶端在執行helo命令時發送
給postfix的主機名。預設地,postfix接收客戶端發送的任意形式的主機名。能指定一個或多個參數值,中間用逗號隔開。限制規則是按照查詢的順序進行的,第一條符合條件的規則被執行。
5. rfc 821信頭限制
rfc 821對郵件的信頭做了嚴格的規定,不過廣泛使用的sendmail並不支
持該規定,所以對於該參數我們只能說不,
6. 通過發件人地址進行限制
能用smtpd_sender_restrictions參數通過發件人在執行mail from命令時提供的地址進行限制。能指定一個或多個參數值,中間用逗號隔開。限制規則是按照查詢的順序進行的,第一條符合條件的規則被執行。
reject_unknown_sender_domain:如果mail from命令提供的主機名在dns中沒有相應的a 或 mx 記錄則拒絕該客戶端的連接請求。能用unknown_address_reject_code參數指定返回給客戶機的錯誤代碼(預設為450)。
check_sender_access maptype:mapname:根據mail from命令提供的主機名、父域搜索access資料庫。如果搜索的結果為reject 或 "[45]xx text" 則拒絕該客戶端的連接請求;如果搜索的結果為ok、relay 或數字則接受該客戶端的連接請求。能用access_map_reject_code參數指定返回給客戶機的錯誤代碼(預設為554)。能通過該參數過濾來自某些不受歡迎的發件人的郵件。
reject_non_fqdn_sender:如果mail from命令提供的主機名不是rfc規定的完整的域名則拒絕客戶端的連接請求。能用non_fqdn_reject_code 參數指定返回給客戶機的錯誤代碼(預設為504)。
預設地,postfix接受來自所有發件人的郵件。
7. 通過收件人地址進行過濾
能用smtpd_recipient_restrictions參數通過發件人在執行rcpt to命令
時提供的地址進行限制。預設值為:
smtpd_recipient_restrictions = permit_mynetworks, check_relay_domains
能指定一個或多個參數值,中間用逗號隔開。限制規則是按照查詢的順序
進行的,第一條符合條件的規則被執行。可用的規則有:
check_relay_domains:如果符合以下的條件,則接受smtp連接請求,否則拒絕該連接,能用relay_domains_reject_code 參數指定返回給客戶機的錯誤代碼(預設為504)。
* 客戶端主機名符合$relay_domains及其子域
* 目的地為$inet_interfaces、$mydestination或$virtual_maps
permit_auth_destination:不管客戶端的主機名,只要符合以下的條件,就
接受smtp連接請求:
* 解析後的目標地址符合$relay_domains及其子域
* 解析後的目標地址符合$inet_interfaces、$mydestination或$virtual_maps
reject_unauth_destination:不管客戶端的主機名,只要符合以下的條件,
就拒絕該客戶端smtp連接請求:
* 解析後的目標地址符合$relay_domains及其子域
* 解析後的目標地址符合$inet_interfaces、$mydestination或$virtual_maps
check_recipient_access:根據解析後的目標地址、父域搜索access資料庫。如果搜索的結果為reject 或 "[45]xx text" 則拒絕該客戶端的連接請求;如果搜索的結果為ok、relay 或數字則接受該客戶端的連接請求。能用access_map_reject_code參數指定返回給客戶機的錯誤代碼(預設為554)。
reject_unknown_recipient_domain:如果收件人的郵件地址在dns中沒有相應的a 或 mx 記錄則拒絕該客戶端的連接請求。能用unknown_address_reject_code參數指定返回給客戶機的錯誤代碼(預設為450)。
reject_non_fqdn_recipient:如果發件人在執行rcpt to命令時提供的地址
不是完整的域名則拒絕其smtp連接請求。能用the non_fqdn_reject_code參數指定返回給客戶機的錯誤代碼(預設為504)。
5. php5.3怎麼使用postfix
1、ubuntu 下安裝postfix,執行命令:
# apt-get install postfix popa3d
如果不需要pop3服務,把popa3d去掉
2、在php.ini配置文件上,設置mail函數:
1)打開php.ini配置,下面是我的php.ini路徑:
# vi /home/service/web/config/php/lib/php.ini
2)找到:sendmail_path ,將其設置為:
sendmail_path = /usr/sbin/sendmail -t
注意:這里需要先到/usr/sbin/ 目錄中,確認是否存在sendmail文件。
3、啟動postfix:
# /etc/init.d/postfix start
4、重啟apache:
# /etc/init.d/apache2 restart
5、以上完成。你可以寫一個發送email的php文件做測試
6. linux下的postfix郵件伺服器怎麼創建賬號
postfix創建郵件賬號命令:
useradd-gmail-s/sbin/nologinuser
配置好郵件伺服器後,重啟dovecot服務。
/etc/init.d/dovecotstart
然後測試,發送接收郵件!
7. postfix郵件使用telnet 127.0.0.1 25 進入發郵件可以收到,用mail命令也沒有提示錯誤單收不到郵件
確認兩個部分看看
1、main.cf上的默認域
2、主機名和對一個的ip地址
。。。
一直還沒用過使用mail命令來測試郵件呢。。。
8. 如何給postfix添加用戶和密碼
1.配置postfix a. /etc/postfix/main.cf 配置mydomian(域名),myhostname,myorigin,inet_interfaces=all(其他關閉),mynetworks-style,mydestination,mynetworks,relay_domains,home_mailbox 配置主機名和域名mydomainmyhostname 設置由本機寄出的郵件所使用的域名或主機名稱myorigin 設置postfix服務監聽的網路介面inet_interfaces 設置可接受郵件的主機名稱和域名mydestination 設置可以轉發哪些網路的郵件mynetworks 設置可以轉發哪些網域的郵件relay_domains=sina.cnb.驗證:telnetlocalhost25mailfrom:[email protected](發件人任意)rcptto:[email protected](收件人創建的名字和設置好的域名)data(輸入信息).(結束輸入)quit(離開)2.配置dovecotyuminstall-ydovecot a.配置文件:a. vim/etc/dovecot/dovecot.conf (protocols=imappop3) b. vim/etc/dovecot/conf.d/10-auth.conf (disable_plaintext_auth=no) c.vim/etc/dovecot/conf.d/10-mail.conf (mail_location=maildir:~/Maildir)地址要和postfix伺服器配置文件中的home_mailbox地址一致 d.vim/etc/dovecot/conf.d/10-ssl.conf (ssl=yes) e.vim/etc/pam.d/dovecot (查看pam認證文件)b.驗證:[root@CentOS6~]#telnetlocalhost110Trying::1Connectedtolocalhost.Escapecharacteris'^]'.+OKDovecotready.useruser1+OKpass123+OKLoggedin.list+OK4messages:1472245834644464.retr3+OK464octetsReturn-Path:X-Original-To:[email protected]:[email protected].郵件客戶端的配置 a.關閉防火牆,selinux b.設置收發郵件伺服器我這里是用的foxmail看我的截圖這樣就可以了
9. 如何在終端用postfix發郵件
postfix 是SMTP軟體
centos安裝了Postfix後啟動程序
如果在伺服器上直接使用mail 命令即可發送
比如:mail -s 「test」 [email protected]
本地測試使用telnet到伺服器的25埠
輸入賬號和密碼
10. Linux 下無法使用mail命令發送郵件
根據你描述的情況,使用mail發郵件是通過本機的postfix來發送的。如果本機的的postfix配置中啟用了relay,則會將發信請求轉發到relay機器進行投遞。如果此時通過mail發不出郵件,則問題有可能出現在relay的伺服器上。
你說的通過php是可以發郵件的,這個和使用mail是兩回事。如果php程序使用的是自己的發信程序,那與本機的postfix可能就沒有什麼關系。這其中具體的配置還要看程序是怎麼設計的。