最终效果
如下,能够使我们发送的邮件直接到达对方的收件箱,而不是被当作垃圾邮件。
制作DKIM密钥
使用openssl生成我们所需要的Private Key和Public Key。
X:\sign>openssl genrsa -out rsa.private 1024
WARNING: can’t open config file: /home/drangon/work/mingw-w64-dgn/lib_bin/openssl/ssl/openssl.cnf
Loading ‘screen’ into random state – done
Generating RSA private key, 1024 bit long modulus
………………++++++
…………………………..++++++
e is 65537 (0x10001)
X:\sign>openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM
WARNING: can’t open config file: /home/drangon/work/mingw-w64-dgn/lib_bin/openssl/ssl/openssl.cnf
writing RSA key
这样得到rsa.private和rsa.public两个文本文件。
域名配置DKIM
在域名控制面板,除了需要给域名(例如xsign.org)设置MX记录,还要添加一项dkim的TXT记录。
假设dkim的Selector是s1(可以有多个Selector,表示可以使用多个dkim证书),则要设置的是:
s1._domainkey.xsign.org TXT
内容为:
k=rsa; t=y; p=[Public Key的内容]
可以使用nslookup检查是否已经生效。
I:\Users\Administrator>nslookup
默认服务器: ns3.gd.cnmobile.net
Address: 221.179.38.7> set type=TXT
> s1._domainkey.xsign.org
服务器: ns3.gd.cnmobile.net
Address: 221.179.38.7非权威应答:
s1._domainkey.xsign.org text ="t=y; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1OmB7qZbFWqAgl51jS
U0Opn/wdJaB2mTkkPgD+gW3ccjXTazgYZVkokCeD+67oceWw42mLTkzg402Vc+IaIk+L57GULVxzECw8
mWtR7jOcG3UOnuaRMScX8uRlnllXj6v1SQTHljW2M++D/hj3dn8lDWxWw0s8IbesSb3far8XQIDAQAB"
SMTP发送代码
需要用到python的dkim库和dnspython.org提供的dns库。
- import smtplib, email, dkim
- import dns.resolver
- def sendmail(mailfrom, mailto, msg):
- domain = email.Utils.unquote(mailto).split("@")[1]
- host = dns.resolver.query(domain, "MX")[0].exchange
- smtp = smtplib.SMTP(str(host))
- smtp.sendmail(mailfrom, [mailto], msg)
- smtp.quit()
- if __name__ == "__main__":
- msg = "From: xiaoxia@xsign.org\r\n" \
- "To: gdxxhg@gmail.com\r\n" \
- "Subject: Hi\r\n\r\n" \
- "I miss you!!!!\r\n"
- sig = dkim.sign(msg, "s1", "xsign.org", open("./rsa_private.txt").read())
- msg = sig + msg
- print msg
- sendmail("xiaoxia@xsign.org", "gdxxhg@gmail.com", msg)
- print "ok"
运行程序,即发送了一封邮件到gdxxhg@gmail.com的收件箱里。
验证DKIM
GMail里可以看到dkim的验证已经通过!
Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning xiaoxia@xsign.org does not designate 120.196.50.109 as permitted sender) smtp.mail=xiaoxia@xsign.org; dkim=pass (test mode) header.i=@xsign.org
Date: Tue, 24 May 2011 10:51:43 -0700 (PDT)
Message-Id: <4ddbf02f.c45bdc0a.6271.6877SMTPIN_ADDED@mx.google.com>
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=xsign.org;
i=@xsign.org; q=dns/txt; s=s1; t=1306259500; h=From : To : Subject;
bh=5yC7rMxS78DH//OfCDEEHnf4nFVZ21IFPtApH3ARSkg=; b=ASqTJBKbhDzVcj59AYR7kUI7WF+o5GJHje5iN6JqiCtVTk/DQaft58sridQu4YMTFfadmuPRnUfGia/CU2nJFnzeJmGq9nQIRctwsLdUWIKGxc5xp3eZ0H4rU57WAuDJPRQdea7Vaf4sNotDHEldKC1lHsSgdROYbhE12CZjNpI=
From: xiaoxia@xsign.org
To: gdxxhg@gmail.com
Subject: HiI miss you!!!!
什么叫非权威应答
不了解!!!英文版是Non-authoritative answer(Linux下的)
这太有用了,这样邮件就不会发送到垃圾箱里。 但DKIM规则看来要修改,修改了。
DKIM在防止别人伪造邮件(例如伪造一封来自test@sina.com的邮件,是很有用的,因为你的邮件不能够使用sina的签名)。
我购买了美国俄亥俄州虚拟空间,想传首歌,但慢不说,根本就传不上去,传了一半就掉,分卷压缩的文件,服务器根本就不能解压,百度GOOGLE了很多次无果, 能帮忙编写解压 linux 系统 分卷压缩PHP吗?谢谢!
是什么格式的啊?你为什么要用分卷压缩呢????
歌曲格式: MP3 压缩包格式: zip 如果不用分卷压缩,文件会因为太大传不上去,1M的文件可以顺利传上去。分卷压缩传上了,又无法在服务器解压
太大上传不去?是什么限制呢?
zip分卷压缩没用过。你可以直接把文件分成几块,然后再合并的吧!!!要借助一些程序例如dd
dd 是什么缩写?还是… 其实也不大的文件,就几M,传着,传着就没了。
dd是一个Linux命令!
用ftp,如果有ssh的话用ssh
php上传,很痛苦的
FTP传 5.41M歌曲,一开始有32KB速度,传到304KB速度为0。接下来就是无止境的等待!