欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > SMTP代理

SMTP代理

2025/2/26 1:12:47 来源:https://blog.csdn.net/mgxcool/article/details/143526122  浏览:    关键词:SMTP代理

背景:

我们有一个第三方的系统支持通过邮件发送报警,但是只支持基本的smtp功能,输入账号密码/邮箱地址/邮件服务器地址/端口号,却不支持加密功能,试了下starttls和ssl加密都不行。所以最终解决方案是加一个smtp代理来实现加密功能。

1. 方案一:

nginx搭建smtp代理,看了好多文档基本都是介绍反向代理的,认证功能还需要再弄一个服务,而且网上看到的认证基本都是用来实现客户端的认证,upstream的认证并没有找到,所以索性就放弃了。

2. 方案二:

nginx stream ssl代理,这个方法本来是可以行的通的,在stream代理上开启proxy_ssl on, upstream就回自动使用ssl加密。注意starttls是不行的,因为工作在应用层,stream代理无法实现。 但是遇到另外一个更坑爹的问题,ssl是可以了,但是认证死活不会通过。后来把加密去掉后抓包,发现认证的密码被截断了,原因是这个第三方应用的最大密码长度为30,我们用的aws ses的sk是44字节。

3. 方案三:

postfix搭建邮件转发服务。期间遇到过不少问题,这里一一记录下。

3.1 安装

用的是aws linux, sudo yum install postfix cyrus-sasl-plain

3.2 配置

这里有一个地方需要注意的是,smtpd开头的配置都是作为smtp server的参数,smtp开头的配置是作为smtp client的参数。如果要配置收邮件相关,应该是smtpd开头,如果是发邮件到server上,那么就应该是smtp开头。之前在这里马虎了结果浪费了很多时间。

a. /etc/postfix/main.cf

   relayhost = [upstream.mail.server]
   smtp_sasl_auth_enable = yes
   smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
   smtp_sasl_security_options = noanonymous
   #smtp_sasl_tls_security_options = noanonymous tls相关的配置感觉可以忽略了,会默认使用starttls在应用层做加密
   #smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
   #smtp_use_tls = yes

b. /etc/postfix/sasl_passwd 这里用来存放连接smtp服务器时的认证信息

 [upstream.mail.server]  username:password

配置好后执行sudo postmap /etc/postfix/sasl_passwd,会自动生成一个加密后的文件/etc/postfix/sasl_passwd.db

3.3 客户端认证

既然是邮件转发,那么客户端发送邮件到代理服务器的时候也需要认证。

a. /etc/postfix/main.cf

   smtpd_sasl_auth_enable = yes #开启认证
   smtpd_sasl_security_options = noanonymous
   smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

b. /etc/sasl2/smtpd.conf

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login CRAM-MD5 DIGEST-MD5

c. saslpasswd2 -c -u abc.com test 创建客户端邮箱账号, 此条命令会为test@abc.com创建账号密码,在提示输入密码之后,两次确认密码即可成功创建。

d. sasldblistusers2 查看客户端邮箱账号列表

e. systemclt restart postfix重启服务生效

3.4 日志排查

网上很多地方说日志在/var/log/maillog里,但是排查了好久也没弄出这个日志,有要求安装rsyslog的,但是也没有解决问题。最后是通过journalctl | grep mail看到了日志。

先记录到这里吧。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词