阿里云centos7 邮箱转发服务配置

一、文档编写目的:

网络拓扑图:

阿里云服务器屏蔽掉25端口后,内网服务器如何通过跳板机发送邮件到外网邮箱。

如果是可联网的阿里云机器,可以直接配置mailx使用465端口发送邮件。需要进行ssl验证配置。

背景知识:

  1. 1.     Alternatives –config mta  此命令用于查看和设置当前机器邮箱服务的选项,按数字键选择要使用的邮箱服务。下图选择使用postfix

Linux系统一般内置mailx,ssmtp,实现25,587,465端口的邮箱服务。

邮箱服务之间相互独立,mta设置哪个系统就使用哪个,不存在冲突。对于内置的邮箱服务如果的要卸载的话,一定要慎重,因为很多服务默认和mailx绑定,存在依赖关系,强制卸载会导致依赖服务被删除。

  1. 2.     邮箱服务常见端口及加密协议:

25端口(SMTP):25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件

587端口是STARTTLS协议的 属于TLS通讯协议 只是他是在STARTTLS命令执行后才对之后的原文进行保护的。

465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。

二、内容概述:

  环境准备

  示例验证

  总结

  注:文档中ip均为示例ip

三、配置流程

  测试环境:centos7  阿里云服务器  内网服务器+外网跳板机

1、 内网服务器安装postfix服务

网上大量教程经常性同时安装sendmail和postfix,实际上不必要,用哪个装哪个即可,系统要是自带了直接启动即可,不需要反复卸载安装,他们之间是独立的,互不影响。只是在mta设置中用哪个必须选中。

本文档后续提到的邮箱服务默认都为postfix。

yum安装postfix

Yum install postfix  -y   

2、 配置229内网机邮件经postfix转发到152机器。

进入postfix 目录 cd /etc/postfix  所有配置文件都在这个目录

首先配置main.cf  编辑文件并在末尾添加如下行

#开启转发规则  此处配置告知postfix 发往哪里的邮件需要转发

transport_maps = hash:/etc/postfix/transport

 

#发件地址伪装  此处配置是为了保持发件地址和发件人同为授权人,如果发件人和授权人不一致,有些邮箱会拒收

smtp_generic_maps = hash:/etc/postfix/generic

sender_canonical_maps = hash:/etc/postfix/canonical

local_header_rewrite_clients = static:all

 

配置完成,搜索inet,修改

inet_interfaces = all

 

上述完成,主配置文件即配置完成。接着配置其他文件。

Vi  canonical  配置如下  所以经过postfix的发件人名称一律改为 admin@qq.com

root@host229     admin@qq.com

vi  generic    配置如下

root@host229     admin@qq.com

vi  transport  配置如下 含义所有发往qq.com的邮件一律先转发到152机器

qq.com        smtp:176.19.83.152

 

上述三文件,需要执行postmap生成db文件供服务使用,否则配置无效

Postmap  generic 

Postmap  canonical

Postmap  transport

 

   重启postfix 查看是否正常启动

   Systemctl restart postfix

   Tail –f  /var/log/mailog

   至此,内网机器配置完成。邮件统一转发到152跳板机

   测试命令:

   Echo test |mail –s  ‘test’  jason@qq.com

   通过查看maillog日志验证是否配置成功

 

日志中会显示邮件from来源,to收件人地址,relay地址;

  

3、 152跳板机配置

跳板机收到内网转发来的邮件后,此处可以直接使用587端口postfix直接发送出去,也可以使用stunnel代理465端口发送出去。

分两种情况进行配置,二选一即可,此处都进行演示:

 

     第一种 使用587端口,配置qq中继服务器发送邮件。

Yum  install libsasl2-modules postfix

      Cd /etc/postfix 修改主配置文件

      Vi main.cf  添加如下行

      

  # Enable auth  开启sasl验证

smtp_sasl_auth_enable = yes

# Set username and password  设置qq发件邮箱的授权用户和密码

smtp_sasl_password_maps = static:admin@qq.com:1234

smtp_sasl_security_options = noanonymous

# Turn on tls encryption   开启tls加密

smtp_tls_security_level = encrypt

header_size_limit = 4096000

# Set external SMTP relay host here IP or hostname accepted along with a port number.

设置内部中继服务的主机域名和端口

relayhost = [smtp.exmail.qq.com]:587

 

#发件地址伪装  保持发件人和授权用户一直  否则qq邮箱会拒收

smtp_generic_maps = hash:/etc/postfix/generic

sender_canonical_maps = hash:/etc/postfix/canonical

local_header_rewrite_clients = static:all

      

主配文件修改完成,接着修改地址伪装文件,参照之前的配置修改发件人为admin@qq.com

记得postmap生成db文件。

Systemctl restart postfix 重启服务

 发送测试邮件测试。

 

 

第二种 使用465端口,通过stunnel代理发送邮件,尝试过不通过配置stunnel直接发送465端口邮件,未配置成功,此处参照网友分享,通过stunnel代理走465端口发邮件。

首先安装stunnel代理

 

yum install -y stunnel

创建 stunnel 服务端配置文件,这里使用 5000 端口作为 stunnel 的服务端口:

 

创建加密证书文件:

 

openssl genrsa -out key.pem 2048

openssl req -new -x509 -key key.pem -out cert.pem -days 1095

cat key.pem cert.pem >> /etc/stunnel/stunnel.pem

 

修改配置文件:

vi /etc/stunnel/stunnel.conf  添加如下行:

[smtp-tls-wrapper]

accept = 5000

client = yes

cert = /etc/stunnel/stunnel.pem

connect = smtp.exmail.qq.com:465  

 

打开防火墙端口:

 

firewall-cmd --zone=public --add-port=5000/tcp --permanent

firewall-cmd --reload

创建 stunnel 服务的 systemd 配置文件:

vim /etc/systemd/system/stunnel.service  添加如下内容

[Unit]

  Description=SSL tunnel for network daemons

  After=syslog.target

 

[Service]

  ExecStart=/bin/stunnel /etc/stunnel/stunnel.conf

  ExecStop=kill -9 $(pgrep stunnel)

  ExecStatus=pgrep stunnel

  Type=forking

 

[Install]

  WantedBy=multi-user.target

 

最后启动客户端 stunnel 服务:

 

systemctl enable stunnel

systemctl start stunnel

 

 

至此stunnel配置完成,所有发送至5000端口的内容默认通过connect连接,即smtp.exmail.qq.com:465

接下来修改postfix主配置文件及地址伪装文件:

Cd /etc/postfix

Vi main.cf

 

 #### SMTP

# Enable SASL authentication

smtp_sasl_auth_enable = yes

# Disallow methods that allow anonymous authentication

smtp_sasl_security_options = noanonymous

# Location of sasl_passwd  此处发件授权用户没有使用静态模式,也可改为静态

smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd

# Enable STARTTLS encryption

# smtp_tls_security_level = encrypt

# Location of CA certificates

smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt

smtp_generic_maps = hash:/etc/postfix/generic

sender_canonical_maps = hash:/etc/postfix/canonical

local_header_rewrite_clients = static:all

# Set external SMTP relay host here IP or hostname accepted along with a port number.

relayhost = [localhost]:5000   //此处中继主机为stunnel端口

smtp_host_lookup = dns, native 

 

搜索inet_interfaces = all  修改为all

同时由于125为接收转发机器,所以要配置接收权限,哪些机器的转发请求会操作执行

搜索 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128   175.12.97.0/24

最后边添加内网机器需要转发的ip段

至此main.cf 配置完成,接下来配置辅助文件

Vi canonical   generic  进行地址伪装  保持和授权发件用户一致

格式为: 需要伪装的用户名@主机名    伪装后的用户名@主机名

 

vi sasl/sasl_passwd  配置中继服务此处为stunnel 及授权用户和密码

[localhost]:5000  admin@qq.com:1234

 

重启 postfix验证是否能正常发送邮件

通过  tail –f /var/log/maillog 进行调试

阿里云服务器 centos7 中继邮箱+转发服务 详细配置的更多相关文章

  1. 阿里云服务器centos7环境下安装xampp后,mysql有进程,但是却没有监听3306端口

    配置阿里云服务器centos7中xampp环境时出现了一种情况: 在centos中可以使用命令进入mysql 修改后也可以远程用phpmyadmin连接mysql 但是用navicat却无法连接 先修 ...

  2. 阿里云服务器Centos7.4开放80端口的记录

    问题: 阿里云服务器安装的是centos7, 搭建网站安装lnmp1.5后发现访问不了, 不明所以, 在一论坛找到关于80端口未开放的原因. 需求: 开放80端口.于是有了下面第一,二,三部分关于开放 ...

  3. 阿里云服务器CentOS7.5安装RabbitMQ

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的. 为什么 ...

  4. 阿里云服务器 centos7 ftp安装

    昨天租了阿里云服务器一个月,想玩一下linux系统,结果想用ftp上传本地文件的时候,发现用不了,结果在安装配置的时候折腾了几个小时,在网上查了无数的资料,有的说要改配置文件,有的说要关防火墙,说啥的 ...

  5. 阿里云服务器CentOS 5.7(64位)安装配置LAMP服务器(Apache+PHP5+MySQL)

    一.快速安装Apache+PHP5+MySql ----------------------------------------------------- 补充:由于163的yum源上只有php5.1 ...

  6. 阿里云服务器(ECS)从购买到配置NodeJS环境

    本人入门级前端,对服务器不熟悉,这是自己摸索的过程,可能会有错误! 1.购买 阿里云服务器有个活动是新用户前六个月可以免费试用,但是每天早上发放一定的名额,但为了方便,我买了18RMB的捆绑套餐,也是 ...

  7. 阿里云服务器CentOS7中Tomcat8.x启动慢问题解决记录

    公司服务器刚换CentOS7,在内部的刀片机上一直跑的很溜,迁移到阿里云上后Tomcat启动竟然要6.7分钟!这还了得. 且日志上无任何错误,在日志中查看到如下信息: Log4j:[2015-10-2 ...

  8. 阿里云服务器centos7,docker部署mysql+Redis+vue+springboot+Nginx+fastdfs,亲测可用

    一.购买云服务器 我是今年双十一期间在阿里云购买的服务器, 简单配置2核_4G_40G_3M,三年用了不到800块,不过当时我记得腾讯云更便宜,个人感觉,阿里的云服务器更加的稳定, 毕竟身经百战, 经 ...

  9. 阿里云服务器CentOS7怎么分区格式化/挂载硬盘

    一.在阿里云上购买了服务器的硬盘后就可以操作了,先看看硬盘情况: 硬盘vda是系统盘:vdb是在阿里云后台购买的另一块硬盘. 第一次使用要分区:fdisk /dev/vdb1 在提示符下依次输入:n+ ...

随机推荐

  1. Integer与String的知试点(java中常见面试题)

    1.==符号使用 Integer a = 1000,b=1000; Integer c = 100,d=100; System.out.println(a==b); System.out.printl ...

  2. How to Animate UILabel textColor Properties

    How to Animate UILabel Properties UILabel properties cannot be easy animated due to some various rea ...

  3. linux ps 按进程消耗内存资源大小排序

    linux ps 关于sort的解释 --sort spec specify sorting order. Sorting syntax is [+|-]key[,[+|-]key[,...]] Ch ...

  4. Day1-浅谈接口测试

    1.接口测试的定义:从数据库里面取数据,插入数据,把前段和后端联系起来: 2.接口测试的必要性: 1)前端未开发好,但是接口已开发 2)页面上测不了的,可以通过接口来测试 3.接口测试需要注意: 1) ...

  5. 2017 cinemachine

    只有2017以上才可以使用~ 导入Asset store中的cinemachine,会在上方显示cinemachine.每创建一个虚拟摄像机,就会在主摄像机下创建组件  cinemachine Bra ...

  6. 学习笔记CB008:词义消歧、有监督、无监督、语义角色标注、信息检索、TF-IDF、隐含语义索引模型

    词义消歧,句子.篇章语义理解基础,必须解决.语言都有大量多种含义词汇.词义消歧,可通过机器学习方法解决.词义消歧有监督机器学习分类算法,判断词义所属分类.词义消歧无监督机器学习聚类算法,把词义聚成多类 ...

  7. ubutu16.04 安装Tenda u12无线网卡驱动

    ubutu16.04 安装Tenda u12无线网卡驱动 一些问题: 1) Tenda u12 linux版本的驱动支持 kernel 2.6 到 4.4,而前系统内版本核为4.10,所以编译不过去啦 ...

  8. c#死锁示例代码

    void Main() { object obj1 = new object(); object obj2 = new object(); var t1 = new Thread(delegate(o ...

  9. c++——智能指针学习(unique_ptr)

    1.为什么会有unique_ptr? 动态内存忘记delete,导致内存泄漏.比如: p = new (); if(...) { return ; } delete p; 因此我们需要一种方式来解决这 ...

  10. java虚拟机的学习书籍推荐

    javaEE开发已然是一个老生常谈的话题了,但经典之所以会成为经典,就是因为有可重复琢磨之处,每一次的反复推敲都会有不一样的收获.如果你不满足于做一个只会写if…else…的Java程序员,而是希望更 ...