Debian 11
一、安装
apt install postfix
二、配置
1.dns配置
解释:搭建真实的邮件服务器需要在DNS提供商那里配置下面的dns
- 配置A记录
mail.www.com
-1.x.x.x
- 配置MX记录
www.com
-mail.www.com
解释:按照上面的配置通常邮件格式就是admin@www.com
其通过www.com的MX记录找到mail.www.com再通过其A记录来找到对应服务器完成通讯
2.基础配置
解释:配置main.cf文件(位置/etc/postfix/main.cf
),下面的配置包括上面的按照自己实际的域名来配置
假设
- 域名为
www.com
- 邮件地址(主机名):
mail.www.com
修改里面的内容:
myhostname = mail.www.com
mydomain = www.com
myorigin = $myhostname #在上面配置的下面
home_mailbox = Maildir/
重启:service postfix restart
查看25端口是否开启:netstat -lnpt
(特别提醒一般的服务器25端口并不会开启,可能需要向服务器提供商进行申请)
测试邮件发送:echo "测试邮件正文" | sendmail xxxxx@qq.com
(一般会发送到垃圾邮件里面)
三、smtp认证
安装:安装sasl认证模块apt-get insatll sasl2-bin
解释:配置main.cf文件(位置/etc/postfix/main.cf
),下面的配置写入到该文件内
#配置smtp认证
#开启SMTP服务器的SASL认证功能
smtpd_sasl_auth_enable = yes
#设置SASL认证的本地域名为服务器的域名
smtpd_sasl_local_domain = $mydomain
#设置接收方限制条件,允许来自本地网络的请求和经过SASL认证的请求,拒绝未认证的目标
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_client_restrictions = permit_sasl_authenticated
# 允许不完全符合SASL规范的认证客户端连接
broken_sasl_auth_clients = yes
#设置SMTPD的SASL路径
smtpd_sasl_path = smtpd
#禁用匿名访问SASL认证
smtpd_sasl_security_options = noanonymous
# 在邮件头中包含经过SASL认证的用户名信息
smtpd_sasl_authenticated_header = yes
# 设置邮件大小限制为15MB
message_size_limit = 15728640
创建用户:saslpasswd2 -c -u baidu.com(你的域名) admin(用户) #回车后要输入两次密码
查看用户列表:sasldblistusers2 -f /etc/sasldb2
重要配置:
- 将sasl用户数据库放在postfix可以打开的目录里面(postfix所能浏览的目录有限制故必须把数据库文件复制到postfix的运行目录下不然在用户验证的时候会出错)(每次创建新用户后都要执行一遍):
cp -a /etc/sasldb2 /var/spool/postfix/etc/
- 将postfix添加到sasl组(这样就有了对/var/spool/postfix/etc/读取的权限):
gpasswd -a postfix sasl
四、Python发送邮件以及防垃圾邮件方法
1.发送格式
标准代码:设置好发送者,送达人,发送时间等标准格式避免被勿任为垃圾邮件
import smtplib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formatdate
def sendmail(email_, header, content):
from_addr = 'd@admin.xxx'
passwd = 'g'
# 邮件内容
message = MIMEMultipart()
message.attach(MIMEText(content, 'plain', 'utf-8'))
# 设置发件人和主题
message['From'] = f'FreeAi<{from_addr}>' # 发件人
message['To'] = email_ # 发给谁
message['Subject'] = Header(header, 'utf-8') # 主题
message['Date'] = formatdate(localtime=True)
smtp = smtplib.SMTP("mail.admin.xxx", 25) # 创建安全的smtp对象,依赖smtp服务器的安全配置
smtp.login(from_addr, passwd)
smtp.sendmail(from_addr, to_addrs=email_, msg=message.as_string())
smtp.quit()
content = '''
诚挚的问候,
您的名字 Jack
'''
sendmail('88@qq.com','关于',content)
2.SPF
解释:发件人策略框架(SPF)是一种以IP地址认证电子邮件发件人身份的技术,是非常高效的垃圾邮件解决方案
步骤:
- 打开DNS服务器进行更改:TXT-(名称)yourdomain.com-(内容)v=spf1 a mx ip4:8.8.0.0 ~all
注意:yourdomain.com
应填自己的域名;8.8.0.0
应填自己的ip
3.RDNS
解释:反向DNS查找或者反向DNS解析(rDNS)用于判定一个域名与给定IP是否互相关联。有些公司例如AOL会拒绝没有进行反向解析的发件服务器发出的所有消息,所以你必须确保你进行了反向解析。
可能1(自建服务器):
- 打开DNS服务器进行更改:PTR-(名称)8.8.0.0-(内容)mail.yourdomain.com
- 注意:
mail.yourdomain.com
应填自己的子域名;8.8.0.0
应填自己的ip
可能2(云服务器):
- 在控制台更改Reverse DNS,改为
mail.yourdomain.com
(自己的子域名)
4.DKIM
解释:DKIM是一种电子邮件身份验证协议。它使用公钥密码学来验证发送的电子邮件的完整性和来源。发件服务器使用私钥对邮件进行签名,而邮件接收服务器使用公钥来验证签名的有效性。DKIM的目标是证明邮件确实是由所声明的发件人发送,并且未被篡改
下载:sudo apt install opendkim opendkim-tools
Linux中执行命令:opendkim-genkey -b 2048 -s selector1 -d example.com
(其中selector1 比较重要下面还要用(可自定义);example.com是自己的域名)
获取公钥:openssl rsa -in selector1.private -pubout -out selector1.public
(其中selector1与上面要保持一致,公钥就生成在selector1.public文件)
步骤:
- 打开DNS服务器进行更改:TXT-(名称)selector1._domainkey.mail.yourdomain.com-(内容)v=DKIM1;p=MII…
注意:selector1
还是要与上面保持一致;p
对应上面的公钥
5.DMARC
解释:DMARC 是一个域基础的邮件身份验证和反欺骗协议。它结合了两个其他协议,即DKIM和SPF(Sender Policy Framework),以确保发件人的域名身份验证和防止邮件欺骗
步骤:
- 打开DNS服务器进行更改:TXT-(名称)_dmarc-(内容)v=DMARC1; p=none; pct=100
五、使用腾讯云邮件服务
解释:自建的邮件服务器,不仅25端口申请很麻烦,而且邮件容易变成垃圾邮件,这个还不是最麻烦的,最麻烦的是比如向QQ邮箱发邮件,本人亲测,发了十几封后,几十分钟或数小时再次向QQ邮箱发的邮件因为频率限制被拒收,这种情况不如使用腾讯云邮件服务,其也可以用自己的域名,只需在DNS上配置即可,而且价格相对比较低
使用方法:按下图成功配置后,就去新建发信地址,那里面有可以获取邮箱,和SMTP密码,此时就能很方便的去发邮件了,如直接用上面的python代码,把账号和密码换成腾讯云邮件推送里面的邮箱和SMTP密码即可
网址:https://console.cloud.tencent.com/