Sendmail 和 nslookup 解析問題
在我的 Ubuntu 伺服器上,我一直試圖通過安裝 sendmail 來讓 PHP mail() 函式工作(我也安裝了 postfix,但我放棄了)。但是,當我嘗試發送郵件時,它會在隊列中出現以下錯誤
/var/log/mail.log
:sm-mta[xxx]: gethostbyaddr(x.x.x.x) failed: x
當我執行
nslookup
(例如nslookup gmail.com
)它說它無法解決並且連接超時。在花了一整天時間並嘗試了各種事情之後,我決定將我的域的名稱伺服器放入我的介面文件中,如下所示:https ://askubuntu.com/a/331636這緩解了我遇到的問題,
nslookup
但我在嘗試發送郵件時仍然在日誌中收到相同的錯誤,除了我的公共 IP 地址沒有顯示,只有私人 IP 地址。例如sm-mta[xxx]: gethostbyaddr(178.x.x.x) failed: x # public IP error not showing anymore sm-mta[xxx]: gethostbyaddr(10.x.x.x) failed: x # private IP error still showing
我已經查看了很多關於此的文件,但我仍然不確定我做錯了什麼。我已經檢查了 sendmail 正在使用埠 25。由於我只發送郵件,我是否需要擔心有關我伺服器的 MX 的 DNS 記錄?
/etc/resolv.conf
:# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 2001:4860:4860::8844 nameserver 2001:4860:4860::8888 nameserver 8.8.8.8
/etc/dhcp/dhclient.conf
:option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; #send host-name "andare.fugue.com"; send host-name = gethostname(); #send dhcp-client-identifier 1:0:a0:24:ab:fb:9c; #send dhcp-lease-time 3600; #supersede domain-name "fugue.com home.vix.com"; #prepend domain-name-servers 127.0.0.1; request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers, dhcp6.fqdn, dhcp6.sntp-servers; #require subnet-mask, domain-name-servers; #timeout 60; #retry 60; #reboot 10; #select-timeout 5; #initial-interval 2; #script "/etc/dhcp3/dhclient-script"; #media "-link0 -link1 -link2", "link0 link1"; #reject 192.33.137.209; #alias { # interface "eth0"; # fixed-address 192.5.5.213; # option subnet-mask 255.255.255.255; #} #lease { # interface "eth0"; # fixed-address 192.33.137.200; # medium "link0 link1"; # option host-name "andare.swiftmedia.com"; # option subnet-mask 255.255.255.0; # option broadcast-address 192.33.137.255; # option routers 192.33.137.250; # option domain-name-servers 127.0.0.1; # renew 2 2000/1/12 00:00:01; # rebind 2 2000/1/12 00:00:01; # expire 2 2000/1/12 00:00:01; #}
etc/hosts
:# Your system has configured 'manage_etc_hosts' as True. # As a result, if you wish for changes to this file to persist # then you will need to either # a.) make changes to the master file in /etc/cloud/templates/hosts.tmpl # b.) change or remove the value of 'manage_etc_hosts' in # /etc/cloud/cloud.cfg or cloud-config from user-data 127.0.1.1 domain.name 127.0.0.1 localhost.localdomain localhost 178.x.x.x domain.name # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
據我所知,您只想發送郵件。在這種情況下,您不能為伺服器設置 MX 記錄,因為您的郵件伺服器不對任何域負責。
如果我理解您的問題,您真的只想要一個中繼您的郵件的 MTA。
為此目的設置一個成熟的郵件伺服器是多餘的。所以首先這裡有一些選擇: https ://unix.stackexchange.com/questions/1449/lightweight-outgoing-smtp-server
如果您想擁有一個真正的郵件伺服器,最好使用後綴: https ://askubuntu.com/questions/457003/setting-up-a-send-only-mail-server
但是,您的 DNS 問題可能與此無關。
當然,最好是可以解析伺服器上使用的所有 IP 和主機名。要實現這一點,您需要一個用於本地地址(和名稱)的本地名稱伺服器,它將任何其他請求轉發到其他名稱伺服器。
但可能有更簡單的方法:郵件伺服器執行的 DNS 查找應該取決於郵件發送者和接收者域。你應該檢查一下,如果這些是正確的,並且只限制自己的名字,那是可以解決的。也許您已將 From-address 配置為指向某個本地定義的域?
要對此進行調試,您可以嘗試先從命令行發送郵件,然後在此工作後立即轉到 PHP-mailer。
來自隊列的範例郵件將有助於檢查這一點。
您能否發布 netstat -natp 的輸出?只是為了查看 sendmail 綁定到哪些 IP 地址。
我知道這個答案並不完整,但在這一點上我能說的就這麼多了。