阿里云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. Golang的数组

    Golang数组 package main import "fmt" func main() { // 定义一个长度为10,元素类型为string的值 li2 := [10]str ...

  2. linux下mysql的启动与关闭

    1.查看mysql版本 方法一:status; 方法二:select version(); 2.Mysql启动.停止.重启常用命令 a.启动方式 1.使用 service 启动: [root@loca ...

  3. i3wm菜单

    抛弃i3-dmenu-desktop吧,投入到 j4-demu-desktop 速度超快

  4. web h5常用代码总结

    注意:本文原创,转载请说明出处 1.使图片和文字水平居中,给图片css样式:vertical-align: middle;vertical-align:middle的时候,是该元素的中心对齐周围元素的 ...

  5. angular6 引用echart第一次数据不显示解决

    1 使用promise从后台返回数据后,页面还是比数据更快的加载出来,导致echart图页面加载的时候不显示问题 1.1 html <div echarts [options]="do ...

  6. 关于mdb数据库在插入过程中报错->Syntax error in INSERT INTO statement.(sql语句没问题)

    今天,在做mdb数据库的增删改查的时候,代码报错插入语句有问题,但是在数据库中正常执行,苦苦探索了多次,终于找到了问题所在. 结果如图: 上面是报错 下面是解决方案   解决方案:主要原因是offic ...

  7. 构建之法 chapter 8 需求分析 ——读书心得

    需求分析,是软件工程开发的第一步,准确全面地找到用户的需求,尽可能满足用户的要求,是软件惺惺发展的基础.所以需求分析很重要.具体来说有以下几个步骤: 1.获取和引导需求:软件团队需要找到软件的利益相关 ...

  8. 使用django发布带图片的网页(上)

    如何使用django发布带静态图片的网页呢? 在settings.py里加入下面内容 STATIC_ROOT = os.path.join(os.path.dirname(__file__),'sta ...

  9. 学习笔记DL006:特征分解,奇异值分解

    特征分解. 整数分解质因素. 特征分解(eigendecomposition),使用最广,矩阵分解一组特征向量.特征值.方阵

  10. 在linxu机器ansible上运行启动django项目命令

    source py3env/bin/activate  进入虚拟环境 cd /xiangmulujing     进入项目路径 然后就可以执行运行命令了 python manage.py runser ...