MailKit报SmtpClient.OnSenderNotAccepted错误生产环境邮件发送失败排查
错误原因
你遇到的550 146.59.19.44 is _my_ address是Exim邮件服务器的专属报错,触发原因和生产域名的配置、Exim规则直接相关,排查方向如下:
- 域名解析配置问题:生产域名
kumminui.pl的MX解析未指向当前服务器(146.59.19.44),而Beta环境的子域名kumminui.specodit.pl默认继承了主域名的MX配置,指向当前服务器所以发送正常。同时需要检查kumminui.pl的SPF记录,确认已经添加允许当前服务器IP发件的规则,示例规则为v=spf1 ip4:146.59.19.44 ~all。 - Exim本地域名规则未配置:Exim的
local_domains列表中未添加kumminui.pl,服务器判定你使用未在本机托管的域名发件触发拦截,Beta环境的子域名属于specodit.pl主域名范围,默认在白名单列表内。如果是使用面板管理服务器,直接在面板中把kumminui.pl添加为邮件域名即可自动同步配置。 - EHLO参数错误:日志显示你发件时EHLO指令传递的参数是服务器IP
[146.59.19.44],Exim的规则会拦截EHLO参数为自身IP的请求,可在MailKit的连接逻辑中添加如下代码,指定生产域名作为EHLO参数:
SmtpClient client = new SmtpClient(); client.ServerCertificateValidationCallback = (s, c, h, e) => true; // 新增以下行,指定EHLO的域名 client.LocalDomain = "kumminui.pl"; await client.ConnectAsync(emailSMTPHost, Int32.Parse(emailSMTPPort), SecureSocketOptions.Auto);
- 预生成邮件发件人异常:你提到邮件是预生成存储在数据库中的,确认生产环境生成邮件时的发件人地址配置是否和Beta环境一致,避免出现发件人域名不匹配的问题。
内容的提问来源于stack exchange,提问作者PaziewskiPatryk
相关产品推荐
相关产品推荐

