postfix邮件服务器搭建(只发不收,用于监控告警)用户认证


本文地址: https://blog.csdn.net/weixin_45284355/article/details/121022736
###记录下告警邮件服务器搭建。因为腾讯云服务器默认关闭对外访问25端口,所以部署之前需要提前解封25端口,每个账号配额5个实列。解封后尝试telnet 邮件服务器试试,能通就可以开搞了。
在这里插入图片描述

1、搭建邮件服务

1、centos7默认安装postfix。若未安装则使用yum安装

rpm -q postfix                  #查询是否安装
yum -y install  postfix         #yum安装postfix

2、修改配置文件

vim /etc/postfix/main.cf
#设置Postfix主机名,修改成你的域名 此项需要添加A记录并指向postfix所在主机公网IP
myhostname = mail.***.com
#设置域名
mydomain = ***.com
#指定Postfix系统监听的网络接口 此处必须是localhost或127.0.0.1或内网IP
#若此项被注释或填入公网IP Postfix服务器的端口都会将对公网开放
#默认值为all 即监听所有网络接口
inet_interfaces = all

3、重启服务

systemctl  restart  postfix

2、搭建虚拟用户认证服务

1、安装服务

安装sasldb、saslauthd用来提供smtp的虚拟账户和密码服务 sasldb2包含在saslauthd当中

yum -y install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain cyrus-sasl-devel

2、修改postfix配置文件

vim /etc/postfix/main.cf

#指定可以向postfix发起SMTP连接的客户端的主机名或ip地址
smtpd_client_restrictions = permit_sasl_authenticated

#此处permit_sasl_authenticated意思是允许通过了sasl认证的所有用户
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, 

#指定postfix使用sasl验证 通俗的将就是启用smtp并要求进行账号、密码校验
smtpd_sasl_auth_enable = yes

#取消smtp的匿名登录 此项默认值为noanonymous 此项请务必指定为noanonymous
smtpd_sasl_security_options = noanonymous
vim /etc/sasl2/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login CRAM-MD5 DIGEST-MD5

3、目录权限配置

#更改sasldb2数据的权限,让postfix可以读取
chmod 755 /etc/sasldb2

4、创建虚拟用户

#格式:  saslpasswd2 -c -u @后面的地址  @前面的用户名   回车后输入两次密码
saslpasswd2 -c -u mial.***.com  notice   #即notice@mail.***.com
Password:
Again (for verification):

#删除用户
saslpasswd2 -d   notice@mial.***.com

#查看用户列表
sasldblistusers2
notice@mail.***.com: userPassword

5、每次创建用户后都需要重启服务

systemctl restart  postfix

3、配置反垃圾邮件

通过DNS供应商提供的管理界面中可以添加SPF记录(一般都在TXT记录里添加),向Internet声明从我们自己的域名发出的邮件会通过哪些服务器来发送。

在VALUE中输入如“v=spf1 ip4:*.*.*.* -all”的值。 这值分三部分:

(1)v=spf1 说明是一个SPF的v1记录

(2)ip4:*.*.*.* 说明邮件会从此声明IPv4地址发出。它可以是一个IP,或一个IP段。如果有多个IP或多个IP段的话,可以声明多个ip4记录(如“ip4:1.1.1.0/24 ip4:1.1.2.0/24″),每个ip4记录间用空格分隔。另外,除了用IPv4外,还可以有如下选择:

  1. ip6: 使用 IPv6 进行验证。

  2. a: 使用一个域名进行验证。这将引起对域名服务器进行一次 A RR 查询。可以按照 a:domain, a:domain/cidr 或 a/cidr 的形式来使用。

  3. mx: 使用 DNS MX RR 进行验证。MX RR 定义了收信的 MTA,这可能和发信的 MTA 是不同的,这种情况基于 mx 的测试将会失败。 可以用 mx:domain, mx:domain/cidr 或 mx/cidr 这些形式进行 mx 验证。

  4. ptr: 使用域名服务器的 PTR RR 进行验证。这时,SPF 使用 PTR RR 和反向图进行查询。如果返回的主机名位于同一个域名之内,就验证通过了。这个参数的写法是 ptr:domain

  5. exist: 验证域名的存在性。可以写成 exist:domain 的形式。

  6. ext: 定义对 type 的可选扩展。如果没有这个字段,那么仅使用单个记录进行问询。

  7. mod: 这是最后的类型指示,作为记录的一个修正值。修正值 描述:
      redirect 重定向查询,使用给出的域名的 SPF 记录。
      以 redirect=domain 的方式使用。
      exp 这条记录必须是最后一条,允许给出一条定制的失败消息。
      IN TXT “v=spf1 mx -all exp=getlost.example.com”
      getlost IN TXT “You are not authorized to send mail for the domain”
    (3)-all 定义匹配时的返回值,可有如下选择:

    • 缺省值。在测试完成的时候表示通过。
  8. – 表示测试失败。这个值通常是 -all,表示没有其他任何匹配发生。

  9. ~ 表示软失败,通常表示测试没有完成。

  10. ? 表示不置可否。这个值也通常在测试没有完成的时候使用。

4、测试安装sendEmal发送邮件

yum -y install  sendemail
#格式:sendEmail -f 发件人   -xu 认证用户  -xp '认证密码'  -t 收件人 -s SMRP服务  -u "标题" -m "内容"
 sendEmail -f notice@mail.***.com   -xu notice@mail.***.com  -xp '密码'  -t ***@163.com -s 127.0.0.1  -u "标题" -m "内容"
#发送失败就找日志看看。
tailf /var/log/maillog
 #后续就可以用脚本或者配置SMTP服务发送告警信息

在这里插入图片描述

5、发送附件

解决Bad IDN in “from”: ‘***.▒’ 报错

yum -y install mutt
echo "测试附件"  | mutt -s "测试附件1"  -a  maildata.txt   -- ***@***.com
Bad IDN in "from": '***.▒'   #报错信息。需要修改~/.muttrc文件
cat  ~/.muttrc  #没有就直接创建文件
set envelope_from=yes
set from=***@***.com
set realname="***"
set use_from=yes
set charset="utf-8"    #解决Bad IDN in "from": 报错关键项。



  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值