一、Postfix[安装与配置、smtp认证、Python发送邮件以及防垃圾方法]

Debian 11

一、安装

apt install postfix

二、配置

1.dns配置

解释:搭建真实的邮件服务器需要在DNS提供商那里配置下面的dns

  1. 配置A记录mail.www.com-1.x.x.x
  2. 配置MX记录www.com-mail.www.com

解释:按照上面的配置通常邮件格式就是admin@www.com其通过www.com的MX记录找到mail.www.com再通过其A记录来找到对应服务器完成通讯

2.基础配置

解释:配置main.cf文件(位置/etc/postfix/main.cf),下面的配置包括上面的按照自己实际的域名来配置

假设

  1. 域名为www.com
  2. 邮件地址(主机名):mail.www.com

修改里面的内容:

  1. myhostname = mail.www.com
  2. mydomain = www.com
  3. myorigin = $myhostname #在上面配置的下面
  4. 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),下面的配置写入到该文件内

bash 复制代码
#配置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

重要配置:

  1. 将sasl用户数据库放在postfix可以打开的目录里面(postfix所能浏览的目录有限制故必须把数据库文件复制到postfix的运行目录下不然在用户验证的时候会出错)(每次创建新用户后都要执行一遍):cp -a /etc/sasldb2 /var/spool/postfix/etc/
  2. 将postfix添加到sasl组(这样就有了对/var/spool/postfix/etc/读取的权限):gpasswd -a postfix sasl

四、Python发送邮件以及防垃圾方法

1.发送格式

标准代码:设置好发送者,送达人,发送时间等标准格式避免被勿任为垃圾邮件

python 复制代码
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地址认证电子邮件发件人身份的技术,是非常高效的垃圾邮件解决方案

步骤:

  1. 打开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(自建服务器):

  1. 打开DNS服务器进行更改:PTR-(名称)8.8.0.0-(内容)mail.yourdomain.com
  2. 注意:mail.yourdomain.com应填自己的子域名;8.8.0.0应填自己的ip

可能2(云服务器):

  1. 在控制台更改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文件)

步骤:

  1. 打开DNS服务器进行更改:TXT-(名称)selector1._domainkey.mail.yourdomain.com-(内容)v=DKIM1;p=MII...

注意:selector1还是要与上面保持一致;p对应上面的公钥

5.DMARC

解释:DMARC 是一个域基础的邮件身份验证和反欺骗协议。它结合了两个其他协议,即DKIM和SPF(Sender Policy Framework),以确保发件人的域名身份验证和防止邮件欺骗

步骤:

  1. 打开DNS服务器进行更改:TXT-(名称)_dmarc-(内容)v=DMARC1; p=none; pct=100
相关推荐
wearegogog12310 分钟前
C语言中的输入输出函数:构建程序交互的基石
c语言·开发语言·交互
袁煦丞12 分钟前
2025.8.18实验室【代码跑酷指南】Jupyter Notebook程序员的魔法本:cpolar内网穿透实验室第622个成功挑战
前端·程序员·远程工作
Fine姐13 分钟前
The Network Link Layer: 无线传感器中Delay Tolerant Networks – DTNs 延迟容忍网络
开发语言·网络·php·硬件架构
Joker Zxc16 分钟前
【前端基础】flex布局中使用`justify-content`后,最后一行的布局问题
前端·css
无奈何杨19 分钟前
风控系统事件分析中心,关联关系、排行、时间分布
前端·后端
Moment25 分钟前
nginx 如何配置防止慢速攻击 🤔🤔🤔
前端·后端·nginx
晓得迷路了30 分钟前
栗子前端技术周刊第 94 期 - React Native 0.81、jQuery 4.0.0 RC1、Bun v1.2.20...
前端·javascript·react.js
HAPPY酷31 分钟前
给纯小白的Python操作 PDF 笔记
开发语言·python·pdf
前端小巷子32 分钟前
Vue 自定义指令
前端·vue.js·面试
玲小珑38 分钟前
Next.js 教程系列(二十七)React Server Components (RSC) 与未来趋势
前端·next.js