請問一下
我安裝了openwebmail後,若從openwebmail上直接發信會顯示smtp錯誤訊息,而無法發信,但若從client程式(outlook)就可以正常寄信,這是為什麼呢
試用以下步驟來檢測,是哪一部份出的問題:
在上述的 4. 一開始無法寄出的原因,在於一開始安裝 Linux 時,IP是什麼、自己所設的 host 是什麼的關係。
若 IP 為 1.2.3.4,且該IP的DNS是正反解對應為 hosta.abc.com 的話,
好像 Linux 在一開始安裝時就會偵測到,而自己又命名該機器名稱為 hosta.abc.com 的話,
這樣 sendmail 就會預設以 hosta.abc.com 的名義來送信出去而沒有問題,
機器上的 mail 軟體,也自動因 /etc/hosts 的檔案定義沒問題,也可順利寄出。
如果在安裝 Linux 沒有上述那樣順利的 /etc/hosts 正確名稱定義 的情形,
可能是因為在設這台Linux 名稱為 linux001,所以在 /etc/hosts 會自動產生像:
<pre class="c" name="code">
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost linux001
::1 localhost6.localdomain6 localhost6
2xx.1xx.2xx.1xx linux001.xxx.com.tw linux001
而在網路上根本查不到 linux001.xxx.com.tw,所以如果在機器上的 mail 軟體沒特別定義 From 的話,就會以 不存在的 linux001.xxx.com.tw 的名義寄出,就當然寄不出去。
每次安裝 Linux 以來,/etc/hosts 的預設的 127.0.0.1 的那一行總不是那麼理想,後來就都修改成以下的內容:
<pre class="c" name="code">
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost
2xx.1xx.2xx.1xx ms01.xxx.com.tw ms01
機器上的 mail 軟體沒特別設定就都能順利直接寄出。
類比到 openwebmail 寄信的情況也是如此,如果所安裝的機器的 IP 不是 public IP,或者沒什麼 DNS 的正反解記錄的話,只要在 mail 的軟體定義好 From 是查得到的,就沒有問題,這就是為什麼 outlook 可以順利寄出的原因。同樣地,只要定義好 domainnames ,就可順利寄出。
謝謝你的回答,step1~4都是ok的,/var/www/cgi-bin/openwebmail/etc中的openwebmail.conf domainnames目前設定成auto,而hosts中則是
127.0.0.1 localhost.localdomain localhost
10.15.1.1 mail.a.com.tw
domainnames也設定過mail.a.com.tw,也不會通
從openwebmail上的寄出時的錯誤為下
<<< 220 ESMTP
EHLO mail.a.com.tw
<<< 250-mail.a.com.tw Hello localhost.localdomain [127.0.0.1], pleased to meet you
<<< 250 ENHANCEDSTATUSCODES
MAIL FROM:<s@mail.a.com.tw>
<<< 550 5.0.0 Access denied
1.您 outlook 可寄得成功,是否寄件人 也是以 xxx@mail.a.com.tw 的名義寄?
還是以 a.com.tw 的名義寄?如果是後者, domainnames 設為 a.com.tw 試試。
2.如果 寄給收件人的地方 只有打 root 而已,是否可以順利寄成?
用 Hinet 的 DNS 查 mail.a.com.tw:
nslookup mail.a.com.tw 168.95.1.1
是否查得到該 IP 嗎?
我試過用root@mail.a.com.tw和xxx@mail.a.com.tw,從outlook寄出都ok,從redhat中直接下指令mail xxxx也都可以(無論身份是root或xxx)
從htnet dns查,查不到ip,應是反解沒正常,但只有從openwebmail有問題
從redhat中直接下指令mail xxxx@gmail.com (或任何非公司內的外部信箱)是否可以?
有個不大可能的情況,但試試看:
/etc/hosts.allow 裡加入:
sendmail: ALL
redhat 的版本是多少?
sendmail 是哪一個版本?
從redhat下指令mail是可以的,無論寄到公司or yahoo mail
在/etc/hosts.allow中,因為我們公司有委外做spam-mail,所以
sendmail : 10.15.1.0/255.255.255.0 150.87.0.0/255.255.0.0 : allow
sendmail : 192.168.4.3 10.17.252.2 10.12.7.16 10.12.7.8 10.10.12.10 10.13.34.24 202.49.72.50 10.10.20.10 10.28.5.21 10.28.5.28 : allow
sendmail : 192.168.10.0/255.255.255.0 202.36.163.0/255.255.255.0 202.49.72.0/255.255.255.0 202.49.73.0/255.255.255.0 202.49.74.0/255.255.255.0 202.49.75.0/255.255.255.0 10.12.0.0/255.255.0.0 10.11.200.0/255.255.255.0 10.32.0.0/255.255.0.0 10.33.0.0/255.255.0.0 10.10.0.0/255.255.0.0 10.20.4.0/255.255.255.0 10.13.0.0/255.255.0.0 : allow
sendmail : 委外spam-mail網址 : allow
sendmail : All : deny
redhat 9
sendmail要怎麼查版本?
請在 /etc/hosts.allow 裡補一個
sendmail:127.0.0.1:allow
試試,如果我沒有眼花的話,看起來好像沒有這一條件的設定。
sendmail 的版本:
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 xxx.com.tw ESMTP Sendmail 8.14.3/8.14.3; Thu, 13 Aug 2009 20:30:09 +0800
就秀出來了。
至於為什麼 mail 可以,而 openwebmail 不可以,
不曉得是不是因為 這條規則:
sendmail : 10.15.1.0/255.255.255.0 150.87.0.0/255.255.0.0 : allow
是 mail 指令過的原因?
openwebmail 卻是要看 127.0.0.1 的條件?
剛試了一下用
一、echo test | mail bbb@yyy.com.tw
二、telnet localhost 25
250 xxx.com.tw Hello localhost [127.0.0.1], pleased to meet you
mail from: aaa@xxx.com.tw
250 2.1.0 aaa@xxx.com.tw... Sender ok
rcpt to: bbb@yyy.com.tw
250 2.1.5 bbb@yyy.com.tw... Recipient ok
data
354 Enter mail, end with "." on a line by itself
test222
.
三、pine bbb@yyy.com.tw
這三種同樣是從 主機裡寄信,
但發現 mail log 的 from 記錄內容就很不同,
那個差別是什麼?我一時也無法了解其區別。
所以只試 mail 可成,不代表另兩種是一定成。
我想,openwebmail 的連線本身 sendmail 的方式,
與 mail 指令會送到 sendmail 的方式,應是不同的。
通了
sendmail:127.0.0.1:allow
接下來就差,要如何正確顯示中文與日文了
謝
openwebmail通常是預設big5,如果字內容 非big5,內容就會亂碼;要看內容,就得把瀏覽器的編碼改為 像GB2312或Shift_JIS或其他對的編碼,才能看得到內容,但同時openwebmail的原來中文文字就變亂碼。OWM沒法像gmail一樣,自動判斷內容來做內容編碼的轉換。
請問sendmail有設定寄件者認證嗎? (saslauthd 服務)
access是否有設定本機允許呢?
我覺得也應該往openwebmail的方向查一下相關設定是否正確
/openwebmail/etc/auth_unix.conf
passwdfile_plaintext /etc/passwd
passwdfile_encrypted /etc/shadow
/openwebmail/etc/dbm.conf
dbm_ext .db
dbmopen_ext .db
dbmopen_haslock yes
/openwebmail/etc/auth_unix.conf
passwdfile_plaintext /etc/passwd
passwdfile_encrypted /etc/shadow
都ok如下
passwdfile_plaintext /etc/passwd
passwdfile_encrypted /etc/shadow
passwdmkdb none
check_expire no
check_nologin no
check_shell no
check_cobaltuser no
change_smbpasswd no
我可以登入openwebmail,只是寄信時出現smtp錯誤
/openwebmail/etc/dbm.conf也都有改
請問sendmail有設定寄件者認證嗎? (saslauthd 服務)-->sendmail要怎麼查?
access是否有設定本機允許呢?
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
/etc/mail/access 裡的 127.0.0.1 RELAY
與 /etc/hosts.allow 的 sendmail:127.0.0.1:allow
兩邊都有可能。
新版的 sendmail 的設定,開了哪些功能,通常在 /etc/mail/sendmail.cf 的最下面幾行會有把 sendmail.mc 的設定寫在上面。
若舊版的 sendmail.cf 最下面沒有寫 sendmail.mc 的內容。
如果您都是用 OS 預設的 sendmail.cf 而沒有什麼變動的話,
/etc/mail/sendmail.mc 應該就是目前 sendmail.cf 的設定來源。
不然可能看是否在 /usr/share/sendmail-cf/cf/ 曾編輯過 sendmail.mc,然後透過 m4 的指令產生新的 sendmail.cf?或者也有可能是,另外抓 sendmail 的 tarball 來編譯,而裡面的 cf 目錄才是 sendmail.mc 的所在。
更正:
/etc/mail/access 裡的 127.0.0.1 RELAY
與 /etc/hosts.allow 的 sendmail:127.0.0.1:allow
兩邊都有造成 阻擋的可能。
這個問題我剛剛發生,我知道解決之道。
如同twtw說的
在/etc/mail/access 加上 127.0.0.1 RELAY 即可 然後重新編譯一次,保證可以.