内网通过nginx代理发送邮件
背景
项目中只有一台服务器 A 能访问互联网, 服务器 B 只能访问内网。 先发送qq邮件程序部署在服务器 B。 A 上部署nginx。
步骤
1、 重新编译 nginx
nginx 需要支持 strean。 原来的nginx 需要重新编译替换。
查看原nginx 支持那些 module:
./nginx -V
结果:configure arguments: --with-http_ssl_module --with-mail --with-stream --with-mail_ssl_module --with-stream_ssl_module
下载nginx 源码,编译
./configure --with-http_ssl_module --with-mail --with-stream --with-mail_ssl_module --with-stream_ssl_module
然后
make
请勿 make install
编译后的 nginx 在 objs 目录中。 将该 nginx 替换 旧的 nginx。
重新启动nginx (一定要操作)
kill -15 nginx master pid 也可以停止nginx
./sbin/nginx -s quit
./sbin/nginx
2、 更改nginx 配置
nginx中,stream配置跟http的配置在同一级 !!!
# send mail
stream{server {listen 2250;proxy_pass smtp.qq.com:25 ;}
}
然后
./sbin/nginx -s reload
3、 python发送程序
send_mail.py
# coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import time
from email.utils import formataddrdef send_mail(receivers, title, content ):mail_host = "服务器A的内网ip"sender_mail = "******@qq.com"sender_pw = "QQ邮箱授权码"message = MIMEText(content,'html','utf-8')message['Subject'] = title#message['From'] = Header("邮件来自", 'utf-8')message['From'] = formataddr(["邮件来自", sender_mail])message['To'] = Header("收件人", 'utf-8')try:smtpObj = smtplib.SMTP()smtpObj.connect(mail_host, 2250)smtpObj.ehlo()smtpObj.login(sender_mail, sender_pw)smtpObj.sendmail(sender_mail, receivers, message.as_string())smtpObj.quit()print('success')except smtplib.SMTPException as e:print('error',e) #打印错误if __name__ == "__main__":receivers = ["736*******@qq.com"] title = "自动发送邮件-" + time.strftime("%F %T")content = "测试 903 <br /> 测试2 904 <br />"send_mail(receivers, title, content)
执行发送邮件:
python send_mail.py
内网通过nginx代理发送邮件相关推荐
- frp内网穿透+Nginx反向代理
frp内网穿透+Nginx代理 frp 的作用(来自百度百科) 利用处于防火墙后的机器,对外网环境提供 http 或 https 服务. 对于 http, https 服务支持基于域名的虚拟主机,支持 ...
- 内网安全学习(六)—域横向-内网漫游: Socks 代理
内网安全-域横向内网漫游 Socks 代理隧道技术 1.前置知识: 1)正向与反向连接: 正向就是你去连接被控主机,但由于机器处于内网内,分配的内网ip,无法直接找到,所以需要方向连接,即让主机连接我 ...
- 【内网安全】域横向内网漫游Socks代理隧道技术
代理技术和隧道技术都属于内网穿透,代理主要解决内网里面通信的问题(比如对方在内网,你也在内网,这时候两个内网实现通信就必须要经过代理才能实现,常见工具有frp.ngrok和ew等,ew(earthwo ...
- 内网服务器设置代理访问外网
内网服务器设置代理访问外网 背景 首先需要两台云服务器,其中服务器A无公网IP,服务器B有公网IP. A B 公网IP / 110.40.255.180 内网IP 172.17.64.11 172.1 ...
- linux用rpm安装nginx,Linux内网安装nginx(rpm包安装方式)
然后,将下载好的rpm包放入服务器内,地址随意,进入对应目录,执行Linux命令: ( rpm -ivh rpm包的名字) rpm -ivh nginx-1.18.0-1.el7.ngx.x86_64 ...
- 内网渗透--frp代理设置与proxychains代理设置
标题内网渗透–frp代理设置与proxychains代理设置 内网服务器 内网IP地址 外网IP地址 内网web服务器(windows 7) 192.168.52.143 192.168.213.13 ...
- 内网渗透 | FRP代理工具详解
FRP工具的使用 FRP官方文档:https://gofrp.org/docs 文章目录 **一.FRP工具的介绍** **1.为什么需要内网穿透** **2.FRP介绍** **3.为什么使用FRP ...
- 内网安装nginx+keepalived环境配置及简单使用
分享一下这次艰难的配置过程,衔接上一篇的配置内网独立IP虚拟机. 先吐槽一波,由于公司网络属于内网,与外网互不相通,所以在安装nginx的时候可能会去外网找相对应rpm文件,而且也有许多的版本不兼容问 ...
- 内网穿透反向代理应用 xfrp
授权协议: Apache 开发语言: C/C++ 操作系统: 跨平台 软件首页: https://github.com/KunTengRom/xfrp 软件文档: https://github.com ...
最新文章
- Microsoft training Kits
- RabbitMQ 简介
- PostgreSql安装(win 2003 下)
- 交换机工作原理(下)
- pomelo php,Nginx 502 Bad Gateway 自动重启shell脚本
- Spring MVC和Spring Boot的概念以及比较
- plt.axis()用法详解
- jquery中方法扩展 ($.fn $.extend) 学习笔记
- phantomjs搭建输出js渲染后的html接口
- ES6——generator与yield
- java 多线程 day06 threadLocal
- 36 岁程序员应聘被公司领导直接拒绝;字节跳动:公司暂不具备上市条件;财务软件 bug 致数百人被错误定罪|极客头条...
- 各计算机系统用传输介质互连,计算机网络技术与应用.doc
- linux 查找文件及根据条件搜索文件内容
- Unity VR成像原理
- 创业公社:亦庄分中心开业 借好创业东风
- java png图片读取_png图片的读取
- 台式机的无线网卡连接wifi,能连上但丢包严重,无法上网
- C盘容量不足,磁盘满了怎么办
- Phpcms v9建站详细流程