Networking

OpenSMTPD 不會在重新啟動時工作

  • October 6, 2015

我剛剛在我的 Arch linux 機器上安裝了一個 OpenSMTPD 伺服器。當我自己啟動它時它工作正常,但是當我重新啟動機器時無法啟動。

這是journalctl -f _SYSTEMD_UNIT=smtpd.service輸出:

-- Reboot --
Oct 05 15:14:29 campbell-kelly smtpd[260]: info: startup
Oct 05 15:14:29 campbell-kelly smtpd[265]: fatal: smtpd: bind: Cannot assign requested address
Oct 05 15:14:29 campbell-kelly smtpd[260]: warn: lost child: pony express exited abnormally
Oct 05 15:14:29 campbell-kelly smtpd[262]: info: control process exiting
Oct 05 15:14:29 campbell-kelly smtpd[263]: info: lookup agent exiting
Oct 05 15:14:29 campbell-kelly smtpd[266]: warn: ca -> control: pipe closed
Oct 05 15:14:29 campbell-kelly smtpd[264]: warn: scheduler -> control: pipe closed

我不知道它可以從哪裡來。根據我在網際網路上的研究,問題可能來自我的網路介面。

這是ip link重新啟動後的輸出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
   link/ether fa:16:3e:11:8a:b3 brd ff:ff:ff:ff:ff:ff

這是我的/etc/hosts

127.0.0.1   localhost
51.XXX.XXX.159  campbell-kelly.XXX.XX   campbell-kelly

感謝您嘗試幫助我!


編輯:

我的/etc/smtpd/smtpd.conf文件:

pki mail.XXX.XX certificate  "/etc/smtpd/tls/smtpd.crt"
pki mail.XXX.XX key          "/etc/smtpd/tls/smtpd.key"

table creds                    "/etc/smtpd/creds"
table vdoms                    "/etc/smtpd/vdoms"
table vusers                   "/etc/smtpd/vusers"

listen on eth0 tls pki mail.XXX.XX
listen on eth0 port 587 tls-require pki mail.XXX.XX auth <creds>

accept from any for domain <vdoms> virtual <vusers> deliver to mbox
accept for any relay

我的/etc/smtpd/creds. 密碼已通過以下方式獲得echo test | smtpctl encrypt

niols   $6$FgkfVn10xLZbDU4O$17y6Wc5YlYMGAzekSxsjZALWnCeLAH3oS4vk8VeUpe5c7l.uGxE3q.27FwXhXA/.EUz/KRVqRedaNX8.AsJw20

我的/etc/smtpd/vdoms

XXX.XX
XXX.YY
ZZZ.XX

我的/etc/smtpd/vusers

niols@XXX.XX        niols
niols@ZZZ.XX    niols

我的問題實際上只在重新啟動時發生。當我手動啟動它時,甚至 asmtpd -v似乎也沒有顯示任何問題。

盡量不要聽 eth0,在 0.0.0.0 上聽可能會更好。

listen on 0.0.0.0 port 587 tls-require pki mail.XXX.XX auth <creds>

依此類推.. 相應地用 eth0 更改另一行。

這具有能夠使用 127.0.0.1 發送郵件的優勢,並且即使網路介面還沒有任何 IPv4 或 IPv6 地址也應該可以工作。

引用自:https://serverfault.com/questions/726795