背景

项目中只有一台服务器 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代理发送邮件相关推荐

  1. frp内网穿透+Nginx反向代理

    frp内网穿透+Nginx代理 frp 的作用(来自百度百科) 利用处于防火墙后的机器,对外网环境提供 http 或 https 服务. 对于 http, https 服务支持基于域名的虚拟主机,支持 ...

  2. 内网安全学习(六)—域横向-内网漫游: Socks 代理

    内网安全-域横向内网漫游 Socks 代理隧道技术 1.前置知识: 1)正向与反向连接: 正向就是你去连接被控主机,但由于机器处于内网内,分配的内网ip,无法直接找到,所以需要方向连接,即让主机连接我 ...

  3. 【内网安全】域横向内网漫游Socks代理隧道技术

    代理技术和隧道技术都属于内网穿透,代理主要解决内网里面通信的问题(比如对方在内网,你也在内网,这时候两个内网实现通信就必须要经过代理才能实现,常见工具有frp.ngrok和ew等,ew(earthwo ...

  4. 内网服务器设置代理访问外网

    内网服务器设置代理访问外网 背景 首先需要两台云服务器,其中服务器A无公网IP,服务器B有公网IP. A B 公网IP / 110.40.255.180 内网IP 172.17.64.11 172.1 ...

  5. linux用rpm安装nginx,Linux内网安装nginx(rpm包安装方式)

    然后,将下载好的rpm包放入服务器内,地址随意,进入对应目录,执行Linux命令: ( rpm -ivh rpm包的名字) rpm -ivh nginx-1.18.0-1.el7.ngx.x86_64 ...

  6. 内网渗透--frp代理设置与proxychains代理设置

    标题内网渗透–frp代理设置与proxychains代理设置 内网服务器 内网IP地址 外网IP地址 内网web服务器(windows 7) 192.168.52.143 192.168.213.13 ...

  7. 内网渗透 | FRP代理工具详解

    FRP工具的使用 FRP官方文档:https://gofrp.org/docs 文章目录 **一.FRP工具的介绍** **1.为什么需要内网穿透** **2.FRP介绍** **3.为什么使用FRP ...

  8. 内网安装nginx+keepalived环境配置及简单使用

    分享一下这次艰难的配置过程,衔接上一篇的配置内网独立IP虚拟机. 先吐槽一波,由于公司网络属于内网,与外网互不相通,所以在安装nginx的时候可能会去外网找相对应rpm文件,而且也有许多的版本不兼容问 ...

  9. 内网穿透反向代理应用 xfrp

    授权协议: Apache 开发语言: C/C++ 操作系统: 跨平台 软件首页: https://github.com/KunTengRom/xfrp 软件文档: https://github.com ...

最新文章

  1. Microsoft training Kits
  2. RabbitMQ 简介
  3. PostgreSql安装(win 2003 下)
  4. 交换机工作原理(下)
  5. pomelo php,Nginx 502 Bad Gateway 自动重启shell脚本
  6. Spring MVC和Spring Boot的概念以及比较
  7. plt.axis()用法详解
  8. jquery中方法扩展 ($.fn $.extend) 学习笔记
  9. phantomjs搭建输出js渲染后的html接口
  10. ES6——generator与yield
  11. java 多线程 day06 threadLocal
  12. 36 岁程序员应聘被公司领导直接拒绝;字节跳动:公司暂不具备上市条件;财务软件 bug 致数百人被错误定罪|极客头条...
  13. 各计算机系统用传输介质互连,计算机网络技术与应用.doc
  14. linux 查找文件及根据条件搜索文件内容
  15. Unity VR成像原理
  16. 创业公社:亦庄分中心开业 借好创业东风
  17. java png图片读取_png图片的读取
  18. 台式机的无线网卡连接wifi,能连上但丢包严重,无法上网
  19. C盘容量不足,磁盘满了怎么办
  20. Phpcms v9建站详细流程

热门文章

  1. 同余——同余方程+线性同余方程+高次同余方程
  2. python 3.10安装Box2D遇到的问题及解决办法汇总
  3. 经典的机器学习200道面试题(附参考答案)
  4. Spring 使用@Import注入Bean的三种方式
  5. BCM56330系列交换芯片学习心得
  6. 测试用例编写方法总结
  7. laq机器人_LAQULITO清洁机器人 虽然个子小 但一台顶两台
  8. 重新认识java(九) ---- 内部类
  9. 【HaaS成功案例】基于HaaS开发框架的智能农业物联网大棚系统
  10. 【TB-02模组专题③】微信小程序蓝牙通讯 Ble 蓝牙Mesh TB02模组;