邮件钓鱼核心技术之Postfix搭建
Lastmod: 2023-06-17

我认为,配置Gophish花些时间即可,而邮件网关,则没那么好配,属于是核心技术了,莫名有坑点。

解析域名

mail.poorme.xyz A记录到 123.123.123.123(你的服务器ip)
@    MX记录到 mail.poorme.xyz 优先级10
@    TXT记录到 v=spf1 mx -all

重启

sudo /usr/sbin/postfix stop
sudo /usr/sbin/postfix start

修改端口

意义在于不想用默认的端口。

1、修改postfix的配置文件

vim /etc/postfix/master.cf
#在已有的第一行:
smtp    inet  n    -    n    -    -   smtpd
#之后添加: 
smtp2    inet  n    -    n    -    -   smtpd

2、修改/etc/services文件,增加smtp2监听端口,本文以2525端口为例

vim /etc/services
找到: smtp       25/tcp      mail
其后添加: 
smtp2      2525/tcp mail2
smtp2      2525/udp     mail2 

3、重启postfix

service postfix restart

配置Postfix

/etc/postfix/main.cf,修改为如下,其中的myhostname根据实际修改。

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination reject_unauth_destination
myhostname = mmm.poorme.xyz
mydomain = poorme.xyz
myorigin = $mydomain
mydestination = $myhostname.localhost.$mydomain,localhost,$mydomain
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
#配置smtp认证 PHPMailer就是通过这个认证账户去发送邮件的
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_client_restrictions = permit_sasl_authenticated
broken_sasl_auth_clients = yes
smtpd_sasl_path = smtpd    
smtpd_sasl_security_options = noanonymous #禁止匿名
smtpd_sasl_authenticated_header = yes
message_size_limit = 15728640

创建用户

#使用saslpasswd2创建认证用户及密码(安装了cyrus-sasl就已安装saslpasswd2)

#创建admin@daliycode的邮箱账号(也是smtp的账号)和密码
saslpasswd2 -c -u daliycode.com(你的域名) admin(用户) #回车要求输入密码,2次

#这里很关键,在ubuntu下postfix所能浏览的目录有限制,必须把数据库文件复制到postfix的运行目录下,不然在用户验证的时候会出错。

cp -a /etc/sasldb2 /var/spool/postfix/etc/
#将postfix添加到sasl组

gpasswd -a postfix sasl
#修改sasldb权限
chmod 640 /var/spool/postfix/etc/sasldb2
#列举sasldb2中的用户
sasldblistusers2 -f /var/spool/postfix/etc/sasldb2

测试邮件发送

#测试发送邮件
echo "测试邮件正文" | mail -s "邮件标题" XXXX@qq.com(你的接收邮箱地址)

#列出当前在postfix发送队列中的所有邮件
mailq  

#删除当前等待发送队列的所有邮件,包括发送失败的退信  
postsuper -d ALL

参考阅读

ubuntu搭建postfix smtp邮箱服务为站点发送邮件