
在所有電腦上,sendmail 都可以正常運作,只有一台電腦除外。
所有這些都具有完全相同的 /etc/mail 設定資料夾設置,我使用 rsync 來確保它們全部匹配。
通常這個指令工作得很好......
sendmail -t < my-email-file.eml
但在這一台電腦上(所有電腦都執行 Ubuntu 20.04),該進程掛起。
我嘗試了“sendmail -t”,它可以讓我直接從命令列撰寫電子郵件。我按下 CTRL+D,但沒有任何反應。我嘗試使用命令“郵件[電子郵件受保護]" 並且能夠撰寫郵件,當我到達 cc: 行時,它掛起。按 CTRL+Z 使我中斷,最終電子郵件發送。
發生了什麼導致 sendmail/mail 在文件末尾掛起?
好像沒有什麼辦法可以完全卸載並重新安裝。我嘗試過“apt-get purge sendmail”,系統說它已卸載,但在命令行上輸入 sendmail 仍然讓我進入文字編輯器模式,並且仍然發送電子郵件。而「whereis sendmail」仍顯示在 /usr/sbin 中
我根本不明白這裡發生了什麼事。為什麼它掛在EOF?為什麼只在這一台計算機上?
謝謝!
---- 更新 ---- 我真的不知道如何讀取 strace 輸出,但有人建議這樣做。所有機器上的輸出看起來基本上都相同,這部分是尾端...
socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = 0
sendto(3, "<18>May 6 12:27:19 sendmail[265"..., 120, MSG_NOSIGNAL, NULL, 0) = 120
write(2, "Program mode requires special pr"..., 69Program mode requires special privileges, e.g., root or TrustedUser.
) = 69
alarm(0) = 0
rt_sigprocmask(SIG_UNBLOCK, [ALRM], [], 8) = 0
getpid() = 26521
setuid(1000) = 0
exit_group(78) = ?
+++ exited with 78 +++
但在一台被卡住的計算機上,事情在clock_nanosleep處停止,而在其他計算機上則不然。
socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = 0
sendto(3, "<18>May 6 12:27:57 sendmail[688"..., 100, MSG_NOSIGNAL, NULL, 0) = 100
clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=60, tv_nsec=0},
以下是有關此伺服器上的 sendmail 的一些資訊:
$ which sendmail
/usr/sbin/sendmail
$ ls -l $(which sendmail)
lrwxrwxrwx 1 root root 26 Feb 3 15:51 /usr/sbin/sendmail -> /etc/alternatives/sendmail
$ ls -l /etc/alternatives/sendmail
lrwxrwxrwx 1 root root 30 May 6 06:39 /etc/alternatives/sendmail -> /usr/libexec/sendmail/sendmail
其他伺服器上的端點停止在 /usr/lib/sm.bin/sendmail 處,但我不確定為什麼有問題的筆記型電腦在 libexec/sendmail 處結束,因為它們都運行 ubuntu 22.04。
答案1
我剛剛進入這個蟲洞,同樣延遲了 60 秒。
我沒有 syslogd,但安裝後,它出現在 /var/log/messages 中
May 12 17:52:43 myhost mail.crit sendmail[6955]: My unqualified host name (myhost) unknown; sleeping for retry
May 12 17:52:47 myhost mail.crit sendmail[6960]: My unqualified host name (myhost) unknown; sleeping for retry
May 12 17:52:52 myhost mail.crit sendmail[6974]: My unqualified host name (myhost) unknown; sleeping for retry
嘗試將主機名稱(和 /etc/hosts)變更為 FQDN - myhost.localdomain 或類似的名稱。