• 安装Stunnel来实现正向代理邮件


    文:铁乐与猫
    2017年8月

    一开始我是使用yum install来安装stunnel的

    感觉版本低点也无所谓,毕竟只是拿来加密代理一下邮件收发。

    可是后来发现之前下载的最新官网版本的tar包里有很多方便的tools工具,而yum安装的并没有,很不方便,
    另外考虑到到时候windows客户端的安装,还是同一版本比较好,所以换回卸载旧版本的用编译安装(windows平台的有下相应的安装包)
    cd 进解压后的原代码安装包
    ./configure 运行编译,如果你想指定安装位置也可以自行加上参数--prefix=/usr/local/stunnel 之类
    make
    make install

    进入到源代码包的tools子目录下运行make cert来生成密钥,相当于运行

    openssl req -new -x509 -days 365 -nodes -config stunnel.cnf -out stunnel.pem -keyout stunnel.pem
    

    (不过直接敲的话你得指定好stunnel.cnf和openssl)所以还是推荐像官网说的用make cert。

    如果不用make cert 的繁琐步骤参考:

    Stunnel 服务方式需要一个证书文件。通过 openssl.exe 来创建服务器证书。
    具体命令为

    openssl req -new -x509 -days 365 -nodes -config openssl.cnf -out stunnel.pem -keyout stunnel.pem 
    

    这将会创建一个自己给自己签名的证书。
    参数的含义:

    -days 365
    使这个证书的有效期是 365 天,之后它将不能再用。
    -new 
    创建一个新的证书
    -x509 
    创建一个 X509 证书(自己签名的)
    -nodes 
    这个证书没有密码
    -config openssl.cnf 
    OpenSSL 使用的配置文件 (路径最好指定,所以这个就体现了在tools子目录下敲make cert的方便之处了)
    -out stunnel.pem 
    把 SSL 证书写到哪里(同样,这里如果用make cert的还会自动替你将pem复制到/usr/local/etc/stunnel下)
    -keyout stunnel.pem
    把 SSL 证书放到这个文件中
    

    之后将会问你以下问题(请根据自己的情况回答):

    Country Name (2 letter code) [AU]:CN
    State or Province Name (full name) [Some-State]:
    Locality Name (eg, city) []:
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:
    Organizational Unit Name (eg, section) []:
    Common Name (eg, YOUR name) []:
    Email Address []:

    注意:Common Name (FQDN) 应该是运行 stunnel 机器的主机名。如果你能通过不同的主机名访问这台机器,有些 SSL 客户会警告这个主机的证书有问题,所以最好是使它和用户访问的主机名匹配。

    openssl gendh 512 >> stunnel.pem
    这将生成 Diffie-Hellman 部分, 追加到 pem 文件中。这个只有在你指定 stunnel 使用 DH 才需要。

    openssl x509 -subject -dates -fingerprint -in stunnel.pem
    这个命令是将你的证书信息在屏幕显示出来。

    配置/运行 Stunnel
    Stunnel 默认配置文件是 stunnel.conf,编译安装的时候,目录下已有样例模板,直接复制出来就行了:
    cp /usr/local/etc/stunnel.conf-sample stunnel.conf
    当然模板配置要根据自己的实际情况再进行修改。
    我这边主要是用于做邮件加密(变相的做邮件正向代理),所以大致将关于mail的配置修改:

    (后补:要在server块做设置,这个作为客户端的不用改!)
    后面看到还有server块的,有可能是直接在server块改……

    启动服务的时候也出现问题,stunnel这个原有的不能使用,报错不知道命令的参数;
    后来生成的stunnel3看样子倒是能,只是报需要证书,有可能与我配置文件注释掉了那些cert有关。

    大胆尝试,将之前的修改的配置注释掉,修改server区块的如图下:

    (后补:注---上图配置ssmtp的时候是错误的,应该为smtp.mxhichina.com:25才对!)

    结果还是不行,后来想了想,可能是因为编译安装的,需要直接指定conf文件的路径!

    终于搞明白,还是要用回stunnel这个程序,stunnel3这个是另外模式的。
    这样一来,我对编译安装的软件启动运行之类算是更深刻了。
    其实前面nginx和redis也是同理,只是那个时候还不深刻,照着文档来做,没有去消化理解到。编译和yum安装的这方面不同。


    正确启动方法:/usr/local/bin/stunnel /usr/local/etc/stunnel/stunnel.conf
    (运行脚本、指定配置文件)

    做好服务端的了,就要去另外一台win平台上安装客户端(其实就是同一套,只是配置文件里设置成客户模式)来做测试了。

    在win平台上安装foxmail7.2测试,收发邮箱服务器设置的是stunnel的这台服务器。

    然而测试的效果是能收不能发。
    现在初步怀疑,是不是发件服务器,也就是stunnel也在的服务器上也要安装邮件服务器来作为代发送?
    注意,收件服务器要勾选SSL端口才行,然后端口就是stunnel设置监听的1110端口,它会帮忙收邮件加密传送回win上的foxmail。

    我检查了一下stunnel的配置文件,发现我将smtp服务器的地址给填错了……正确的如下:

    将之前的stunnel服务给kill 进程pid号停掉后,再指定配置文件启动。
    再测试就成功可以发件了。

    END

  • 相关阅读:
    Jenkins-在windows上配置自动化部署(Jenkins+Gitblit)
    GIT-Linux(CentOS7)系统部署GitLab服务器
    VMware 安装Linux系统 CentOS
    GIT-windows系统下Gitblit的使用方式
    SQL 显示所有表所占存储空间
    通过JavaScript更新UpdatePanel备忘
    Entity Framework调用表值函数实现全文检索?
    转载:javascript 拖拽排序,简洁示例备忘
    c++ 读写注册表
    MSSQL中建立分区表(转载备忘)
  • 原文地址:https://www.cnblogs.com/tielemao/p/8547722.html
Copyright © 2020-2023  润新知