使用者註冊完後,無法發送email給使用者,應如何處理?(2008/08/05)

問題編號: 
Q29
A: 

可能有多個原因會引致此問題,若發生不能寄送email給註冊使用者,應先檢查:
 *email設定是否正常。
 *郵件伺服器是否有限制ntur主機的郵件寄送權限。
 *防毒軟體是否會擋外寄信件。
若所有設定皆正常,請查看是否以下原因引起問題:

1. 於log檔出現:javax.mail.MessagingException: 501 Syntax: HELO hostname
系統在寄送email時找不到ntur伺服器的主機名稱, 此問題比較容易發生於linux主機。
主機名稱設定方式因各版本而異,一般來說設定檔為/etc/hosts,加入伺服器名稱, 如下(若伺服器名稱為servername):

127.0.0.1       localhost.localdomain   localhost   servername

此設定需要reload hostname或是重開機才能生效.

2. 於log檔出現:javax.mail.NoSuchProviderException: smtp

linux系統中可能安裝多套java,系統使用舊版的java套件(gcj-1.4.2),導致mail無法使用
解決方式: 執行以下範例指令,指定系統使用NTUR系統所提供的javamail.jar套件,而不要使用系統舊版本JAVA所提供的javamail.jar
(此為範例,jar檔所在路徑仍需視伺服器配置之實際狀況)

/usr/sbin/alternatives --install /usr/share/java/javamail.jar javamail /var/lib/tomcat5/webapps/[[$WEBROOT]]/WEB-INF/lib/mail.jar 4290

3. 於log檔出現:javax.mail.MessagingException: Can't send command to SMTP host; nested exception is: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

需先確認所使使用的mail server是否有採用TLS加密。java中需設定相信此加密的public key,tomcat才能正常與mail server溝通,若有採用TLS加密,請提供public key以進行設定
mail server採用TLS加密, java中需設定相信此加密的public key,tomcat才能正常與mail server溝通,已將key加入,指令為: (此為範例,keystore所在路徑仍需視伺服器配置之實際狀況)

/usr/java/jdk1.5.0_22/bin/keytool -import -alias localhost -keystore /usr/java/jdk1.5.0_22/jre/lib/security/cacerts -file /etc/ssl/certs/ssl-cert-snakeoil.pem

若確定server並無使用TLS加密,系統中仍出現下列錯誤訊息,請下載Email.class(info)
放到webapps/[$WEBROOT]]/WEB-INF/classes/org/dspace/core 下
蓋掉原有的Email.class
重起系統後,請再測試是否解決問題

4. 於log檔出現:com.sun.mail.smtp.SMTPSendFailedException: 501 Username and sender address mismatched
若在dspace.cfg裡有設定寄送email的帳密, 在mail.from.address需設定相同的寄送帳號。 例如:

mail.server.username = library
mail.server.password = library
mail.from.address = library@xxx.xxx.xxx.xxx

問題類型: