我在服务器上设置了postfix,以及openDKIM。
当我跑步时:
echo "Testing setup" | mail -s "Postfix test" {my_email_address}
我收到了电子邮件,邮件标题中有一个DKIM-Signature
标题。
然而,当我编写一个python脚本来发送电子邮件时,请使用smtplib:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import make_msgid
msg = MIMEMultipart('alternative')
part1 = MIMEText('Hello, world', 'plain')
msg.attach(part1)
msg['From'] = 'alert@{my_domain}'
msg['To'] = '{my_email_address}'
msg['Subject'] = 'Test Email'
msg['Message-ID'] = make_msgid()
mailer = smtplib.SMTP('localhost')
mailer.sendmail('alert@{my_domain}', '{my_email_address}', msg.as_string())
mailer.quit()
收件箱中收到的电子邮件缺少DKIM-Signature
标题,Authentication-Results
我看到dkim=none (no signatures found);
所以我的问题是: 我是否需要手动签署我的电子邮件(例如,使用dkimpy),或者是否有一些设置我可以让它为我签名?
如果您想要/需要任何额外信息,请告诉我。
答案 0 :(得分:1)
由于您还没有包含任何配置或日志信息,因此很难确定。但OpenDKIM信息可以这样说:
除非符合签名条件,否则将验证邮件, 它们是:(1)From:地址(如果存在)的域必须是 由 -d 命令行开关或域配置文件列出 设置,以及(2)(a)连接到MTA的客户必须具备 经过身份验证,或(b)必须列出连接到MTA的客户端 在 InternalHosts 配置文件设置引用的文件中 (或者在该选项的默认列表中),或(c)客户必须是 连接到由 MTA 配置文件命名的守护程序端口 设置,或(d)MTA必须设置一个或多个匹配的宏 由 MacroList 配置文件设置设置的标准。
在您的SMTP代码中,您显然未对MTA进行身份验证。那么问题就变成了,你的配置是否允许OpenDKIM以任何其他方式注意到你的愿望,例如在InternalHosts中使用localhost? (我认为这是默认值,但也许你已经覆盖了它。)