通过SMTP或DKIM

时间:2018-05-16 12:44:38

标签: perl smtp sendmail spf dkim

我正在使用Perl Mime::Lite module 使用发送电子邮件到我订阅的邮件列表 DomainKeys Identified Mail (DKIM)Sender Policy Framework (SPF) 记录:

use MIME::Lite;
use Net::SMTP;

my $host = 'mail.domain.com';
my $user = 'user@domain.com';
my $pass = 'password1234';

MIME::Lite->send('smtp', $host, AuthUser => $user, AuthPass => $pass);
my $msg = MIME::Lite->new(
    From     => $from,
    To       => $to,
    Subject  => $subject_enc,
    Type     => 'text/plain; charset=UTF-8',
    Encoding => 'quoted-printable',
    Data     => 'Hello everyone!'
);
$msg->send;

这很好用,但DKIM签名在Gmail中失败了(可能是其他人)。

但是,当我发送没有SMTP身份验证的电子邮件时:

use MIME::Lite;
my $msg = MIME::Lite->new(
    From    => $from,
    To      => $to,
    Subject => $subject_enc,
    Type     => 'text/plain; charset=UTF-8',
    Encoding => 'quoted-printable',
    Data     => 'Hello everyone!'
);
$msg->send;

DKIM通过罚款。

所以我的问题是:如果我在所有外发电子邮件中成功实施了DKIM和SPF记录,是否有必要使用SMTP身份验证来验证电子邮件的发件人,或者是否与Sendmail适当的标题足以确保最佳的交付机会?

1 个答案:

答案 0 :(得分:1)

本地身份验证不会增加邮件的可信度,但也不会对其造成任何伤害。它会以任何方式显示在您的Received标题中,并且您可能会被垃圾邮件过滤器标记下来(他们可能更感兴趣的是是否有任何跳转未加密,这与auth无关)。

你使用auth不应该对DKIM产生任何影响 - 但是有什么不同之处在于你的DKIM签名发生在哪里(如果你的本地邮件服务器签名但你的远程服务器没有签名)。 Mail :: Lite包是否自己进行DKIM签名?或者你依靠你的服务器来做到这一点?收到邮件中的标题会显示已签署的内容,并且还可以为您提供有关DKIM签名确切错误的一些线索 - 如果您在问题中添加了gmail标题,这将非常有用。

单独关注的是性能 - 通过sendmail二进制文件提交效率相对较低 - 所有sendmail二进制文件都打开了与localhost的同步SMTP连接,所以你也可以直接这样做 - 这就是postfix推荐的内容。