如何在Django中禁用对等验证?生产环境邮件连接异常问题
解决Django生产环境SMTP连接意外关闭问题并禁用对等验证
针对你遇到的生产环境邮件连接意外关闭问题,核心原因通常是默认SMTP后端会验证服务器证书,当生产环境的SMTP证书不被信任(比如自签名证书)时就会触发这类错误。以下是禁用对等验证的具体操作:
1. 创建自定义SMTP后端
在你的Django项目中新建工具文件(比如utils/email_backends.py),写入以下代码:
import ssl from django.core.mail.backends.smtp import EmailBackend class NoPeerVerifyEmailBackend(EmailBackend): def ssl_context(self): context = ssl.create_default_context() # 关闭主机名检查和证书验证,即禁用对等验证 context.check_hostname = False context.verify_mode = ssl.CERT_NONE return context
2. 修改项目配置
在settings.py中替换原有的邮件后端配置:
EMAIL_BACKEND = '你的项目名.utils.email_backends.NoPeerVerifyEmailBackend'
额外注意事项
- 若SMTP服务器使用25端口,通常需要开启STARTTLS,可添加配置:
EMAIL_USE_TLS = True - 禁用对等验证会降低通信安全性,仅建议在内部可信环境或测试场景使用;生产环境优先通过配置可信证书解决问题,避免安全风险。
内容的提问来源于stack exchange,提问作者Javier Alejandro Nuñez Falcón
相关产品推荐
相关产品推荐

