Sql-Server

無法讓 DBMail 在 SQL Server 2005 上工作

  • December 5, 2012

我在 Windows Server 2003 R2 虛擬機上執行 SQL Server 2005 SP3 (4053)。當嘗試從 SSMS GUI 或使用 發送測試 dbmail 消息時sp_send_dbmail,我得到適當的“郵件排隊”響應,但未收到郵件。

然後我在 dbmail 日誌中收到以下錯誤:

"The mail could not be sent to the recipients because of the mail server failure.
(Sending Mail using Account 4 (2011-12-05T14:53:27). 
Exception Message: Cannot send mails to mail server. (Failure sending mail.).)"

這是我目前的配置。(伺服器名稱更改以保護無辜者……)

profile_id  name                description                            last_mod_datetime       last_mod_user
----------- ------------------- -------------------------------------- ----------------------- ----------------
3           SQLSERVER1          Default mail profile for server.       2011-12-05 13:48:15.563 COMPANY\maxwed

account_id  name        description                        email_address     display_name  replyto_address    last_mod_datetime       last_mod_user
----------- ----------- ---------------------------------- ----------------- ------------- ------------------ ----------------------- --------------
4           SQLSERVER1  Default mail account for server    dba@company.com   SQLSERVER1                       2011-12-05 15:18:57.800 COMPANY\maxwed

account_id  servertype  servername           port        username credential_id use_default_credentials enable_ssl flags  last_mod_datetime       last_mod_user
----------- ----------- -------------------- ----------- -------- ------------- ----------------------- ---------- ----- ------------------------ --------------
4           SMTP        mail.company.com     25          NULL     NULL          1                       0          0      2011-12-05 15:18:57.800 COMPANY\maxwed

servertype   is_incoming is_outgoing last_mod_datetime       last_mod_user
------------ ----------- ----------- ----------------------- -------------
SMTP         0           1           2005-10-14 01:55:32.850 sa

paramname                         paramvalue        description                                                                    last_mod_datetime       last_mod_user
--------------------------------- ----------------- ------------------------------------------------------------------------------ ----------------------------------------
AccountRetryAttempts              1                 Number of retry attempts for a mail server                                     2005-10-14 01:55:28.193 sa
AccountRetryDelay                 60                Delay between each retry attempt to mail server                                2005-10-14 01:55:28.193 sa
DatabaseMailExeMinimumLifeTime    600               Minimum process lifetime in seconds                                            2005-10-14 01:55:28.193 sa
DefaultAttachmentEncoding         MIME              Default attachment encoding                                                    2005-10-14 01:55:28.177 sa
LoggingLevel                      3                 Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3   2011-12-05 13:37:25.143 COMPANY\maxwed
MaxFileSize                       1000000           Default maximum file size                                                      2005-10-14 01:55:28.193 sa
ProhibitedExtensions              exe,dll,vbs,js    Extensions not allowed in outgoing mails                                       2005-10-14 01:55:28.193 sa

我可以相互ping伺服器,名稱解析工作正常……我什至已經從SQL Server遠端登錄到郵件伺服器,並使用SMTP命令發送郵件。

這很好用。Windows 錯誤日誌中沒有與此相關的錯誤。我與 Exchange 管理員交談,但他沒有看到任何消息。他說伺服器被配置為開放中繼,沒有任何限制。他還說他沒有錯誤消息,甚至沒有電子郵件到達 SMTP 伺服器的記錄。

如果我看dbo.sysmail_log,我看到郵件狀態在變為“失敗”之前是“重試”,但我沒有收到其他錯誤消息,甚至沒有超時。如果我使用 sysmail_help_queue_sp 查看郵件隊列,我會看到狀態從 INACTIVE 變為 RECEIVES_OCCURRING,然後又回到 INACTIVE。然而,我剩下的只是通用錯誤消息。我所做的所有Google搜尋都顯示了更具體的錯誤消息。

所以現在我很茫然。任何和所有的建議將不勝感激。

更新

執行sysmail_help_queue_sp,我發現即使我停止並重新啟動郵件隊列,使用sysmail_stop_spand sysmail_start_sp,隊列狀態仍然是 INACTIVE。我知道這應該是 RECEIVES_OCCURRING。我的問題是這是什麼意思,我如何讓它進入正確的狀態?

進一步更新,我打開了 Wireshark 以查看 TCP 級別發生了什麼。在某種程度上,一切看起來都很正常。SQL Server 框打開與郵件伺服器的連接以驗證連接,郵件伺服器響應,然後關閉連接。到那時,我的“工作”框和這個失敗的框都是相同的,但是工作框再次打開連接,以實際發送電子郵件。失敗的盒子沒有。不知道這是否有幫助,但這是另一個觀察結果……

另一個更新:我完全禁用了以下功能:Symantec Antivirus、ISA Firewall 和 Windows Firewall 已被禁用。還是行不通。對不起。:-)

謝謝,-大衛。

當防病毒軟體阻止數據庫郵件時,我看到了這個錯誤。對於 McAfee,它是防止群發郵件蠕蟲規則。因此您可以檢查 databasemail.exe 是否在例外列表中

請與您的 Exchange 管理員聯繫,以確保 Exchange 伺服器將新 SQL 伺服器辨識為“郵件中繼”。

如果不在您在交換伺服器上使用的 SMTP 虛擬伺服器的中繼列表中,郵件將無法到達任何地方。我忘記將 SQL 伺服器添加到列表中,我花了一段時間才弄明白。

引用自:https://dba.stackexchange.com/questions/8831