聊城网站建设动态,制作个人网站素材,网页设计需要学什么语言,如何建设一个简单的公司网站背景#xff1a;
我们有一个第三方的系统支持通过邮件发送报警#xff0c;但是只支持基本的smtp功能#xff0c;输入账号密码/邮箱地址/邮件服务器地址/端口号#xff0c;却不支持加密功能#xff0c;试了下starttls和ssl加密都不行。所以最终解决方案是加一个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 创建客户端邮箱账号, 此条命令会为testabc.com创建账号密码在提示输入密码之后两次确认密码即可成功创建。
d. sasldblistusers2 查看客户端邮箱账号列表
e. systemclt restart postfix重启服务生效
3.4 日志排查
网上很多地方说日志在/var/log/maillog里但是排查了好久也没弄出这个日志有要求安装rsyslog的但是也没有解决问题。最后是通过journalctl | grep mail看到了日志。
先记录到这里吧。