当前位置: 首页 > news >正文

一、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),下面的配置写入到该文件内

#配置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.发送格式

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

import smtplibfrom email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMETextfrom 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

五、使用腾讯云邮件服务

解释:自建的邮件服务器,不仅25端口申请很麻烦,而且邮件容易变成垃圾邮件,这个还不是最麻烦的,最麻烦的是比如向QQ邮箱发邮件,本人亲测,发了十几封后,几十分钟或数小时再次向QQ邮箱发的邮件因为频率限制被拒收,这种情况不如使用腾讯云邮件服务,其也可以用自己的域名,只需在DNS上配置即可,而且价格相对比较低

使用方法:按下图成功配置后,就去新建发信地址,那里面有可以获取邮箱,和SMTP密码,此时就能很方便的去发邮件了,如直接用上面的python代码,把账号和密码换成腾讯云邮件推送里面的邮箱和SMTP密码即可

网址:https://console.cloud.tencent.com/

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/106634.html

相关文章:

  • React哲学——官方示例
  • 设计模式之开闭原则
  • Linux中的file命令:查看文件类型
  • 使用WiFi测量仪进行机器人定位的粒子过滤器研究(Matlab代码实现)
  • 【vue】vue 里面使用 v-html 插入的文本带有换行符‘\n‘不换行
  • Java失效算法与应用(FIFO、LRU、LFU)
  • Go语音介绍
  • Vue2与Vue3响应式原理
  • flask中写一个基础的sqlHelper类
  • opencv的Mask操作,选择图片中感兴趣的区域
  • 一次有趣的Webshell分析经历
  • 【NLP概念源和流】 05-引进LSTM网络(第 5/20 部分)
  • Vue没有node_modules怎么办
  • 企业级高负载web服务器-Tomcat小项目
  • 《golang设计模式》第一部分·创建型模式-03-建造者模式(Builder)
  • git 忽略掉不需要的文件
  • 摄像机sd卡格式化怎么恢复数据?简单五步轻松解决
  • 1-4 AUTOSAR方法论--开发流程
  • Win10查询硬盘序列号
  • 减少错误和重复工作:PDM系统的智能排错功能
  • 【面试题】作用域面试题
  • 08 定时器(下)
  • C++设计模式之适配器设计模式
  • Maven项目解决cannot resolve plugin maven-deploy-plugin:2.7
  • Postgresql源码(110)分析dsm动态共享内存分配与共享内存mq实例
  • 51单片机学习--蜂鸣器播放音乐
  • 【Vue组件eval方法的使用】
  • C++ 多文件结构和编译预处理命令
  • QT实现中英文键盘
  • java中并发编程CompletableFuture和supplyAsync的用法