Shell 脚本自动安装公司内部邮箱服务器--Postfix

简介:

Postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真是一个让人吃惊的数字。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。

搭建企业邮箱的好处:

1.全面统一企业形象,方便企业形象的推广,同时可以方便产品的推广。
2.对于员工流动,造成信息外泄和资源无法保留提供保证;如果员工使用个人邮箱,离职时必然带走邮箱;
3.便于企业统一管理,设置权限和分文别类,方便企业内部信息交流,沟通和协助;
4.优于个人邮箱的稳定性,安全性及其服务性;
5.有海外转发服务器,这样对于国外邮件的往来不容易丢失和退回邮件。
6.还有一些其它功能,比如防止病毒、手机短信提醒、邮件传真、备份、监控

脚本环境

1.linux centos 7 系统
2.系统可连接外网
3.网络模式:自动桥接模式

实验步骤

1.上传postfix脚本到Linux系统/root目录下

chmod +x *.sh 添加执行权限

2.脚本postfix.sh详解

#!/bin/bash

#自动本机获取网段
net=`ifconfig ens33 | grep "netmask" | awk '{print $2}' | cut -c 1-9`
#自动获取本机ip
ip=`ifconfig ens33 | grep "netmask" | awk '{print $2}'`

#下载postfix相关软件包
down_postfix()
{
#关闭防火墙,安全性
systemctl stop firewalld
setenforce 0
echo -e "\033\t[34m 正在下载postfix相关软件包 ... \033[0m" && sleep 1
yum install -y bind postfix dovecot
}

#修改相关配置文件
setup_file()
{
echo -e "\033\t[34m 正在修改DNS相关配置文件 ... \033[0m" && sleep 1
#编辑DNS主配置文件
#允许监听所有端口
sed -i "13s/127.0.0.1/any/" /etc/named.conf
#允许接收所有网段
sed -i "21s/localhost/any/" /etc/named.conf

#修改编辑区域配置文件
#定义域名及区域数据配置文件名
sed -i "24i zone \"\benet.com\"\ IN {\n\
type master;\n\
file \"\benet.com.zone\"\;\n\
allow-update { none; };\n\
};" /etc/named.rfc1912.zones

#新建正向解析文件
cp -p /var/named/named.localhost /var/named/benet.com.zone
#添加管理员邮箱
sed -i "2s/rname.invalid./admin/" /var/named/benet.com.zone
#添加本机ip地址
sed -i "9s/127.0.0.1/$ip/" /var/named/benet.com.zone
#指定邮件交换记录
sed -i "10c IN MX 5 mail.benet.com." /var/named/benet.com.zone
#解析主机地址
echo "mail IN A $ip" >>/var/named/benet.com.zone
#添加本机解析hosts文件
echo "$ip mail.benet.com" >>/etc/hosts

#修改postfix相关配置文件
echo -e "\033\t[34m 正在修改postfix相关配置文件 ... \033[0m" && sleep 1
#修改发信服务器主机名
sed -i "75c myhostname = mail.benet.com" /etc/postfix/main.cf
#修改发信服务器域名
sed -i "83c mydomain = benet.com" /etc/postfix/main.cf
#修改发信人地址邮件域名
sed -i "99s/#//" /etc/postfix/main.cf
#开启监听ip地址为all
sed -i "113s/#//" /etc/postfix/main.cf
#关闭只监听本地ip
sed -i "116s/^/#/" /etc/postfix/main.cf
#设置邮件存放位置
sed -i "419s/#//" /etc/postfix/main.cf
#修改收件人地址和邮件域名
sed -i '164c mydestination = $mydomain, $myhostname' /etc/postfix/main.cf

#修改devocot相关配置文件
echo -e "\033\t[34m 正在修改devocot相关配置文件 ... \033[0m" && sleep 1
#开启收件服务
sed -i "24s/#/ /" /etc/dovecot/dovecot.conf
#设置允许收件的网段
sed -i "48c login_trusted_networks = $net.0/24" /etc/dovecot/dovecot.conf
#开启邮箱的位置及格式
sed -i "24s/#/ /" /etc/dovecot/conf.d/10-mail.conf
}

#重启所有服务
restart_service()
{
#重启dns服务
systemctl restart named
#重启发件postfix服务
systemctl restart postfix
#重启收件dovecot服务
systemctl restart dovecot
}

#函数汇总
main()
{
down_postfix && setup_file && restart_service
}

#执行所有函数
main

3.验证脚本

1.执行脚本

./postfix.sh #运行脚本

2.查看服务端口

3.创建测试用户zhangsan,lisi

groupadd mailusers #添加用户邮箱测试
useradd -g mailusers -s /sbin/nologin zhangsan #添加zhangsan 用户
useradd -g mailusers -s /sbin/nologin lisi #添加lisi用户
passwd zhangsan #设置zhangsan密码
passwd lisi #设置lisi密码

知识点讲解:

useradd -g mailusers -s /sbin/nologin zhangsan 是添加zhangsan用户加入组里,不登录linux系统
而useradd zhangsan 是可以登录linux系统的
2者创建的用户都可以登录邮箱,不同创建方式的,也可以相互发送邮件,邮箱方面不受影响!

3.安装Foxmail

1.官网下载地址:https://www.foxmail.com/ ,选择windows版本或mac版本。

2.先设置本地电脑dns服务器地址

备注:192.168.0.1 是电脑是本地路由网关地址,为了连接外网
192.168.0.200 是dns服务器地址,为了解析mail.benet.com 域名

3.安装好Foxmail后运行,设置账号,点击手动设置

4.设置邮箱账号,密码,pop服务器,SMTP服务器,其他默认即可,点击创建,完成


5.在zhangsan账户下右击设置,创建lisi用户,设置同zhangsan用户


6.zhangsan用户发信给lisi用户

7.lisi收信查看

8.lisi回复测试

9.zhangsan收信测试

坑点讲解

以上操作教程只用于虚拟机演示,做实验部分。若是真实公司搭建内网邮箱,是不会这么顺利的,会出现很多问题

问题一:有的电脑邮箱顺利登陆,但有的电脑邮箱登陆失败

问题二:一开始邮件收发都正常,过一段时间后,发现邮件发送失败或收件失败。

原因分析:出现这样问题的原因可能是因为域名解析故障或自己搭建的dns服务器解析不稳定

解决方法:

方法1.添加本地hosts文件解析


方法2.设置服务器时填写IP地址代替域名

经过多次测试,我发现了最方便,最稳定的方案就是以下4步:

1.搭建postfix服务时直接不用dns服务

2.在本地也不填写dns服务器地址,自动获取即可

3.添加本地hosts文件解析(见方法1图)

4.设置服务器时填写IP地址代替域名(所有用户必做步骤)

备注:1,2,3步是选做步骤,4是必做步骤,为了保险,4步都操作一下最好!

其他坑点:

Mac系统登录失败,这是由于mac版本foxmail和Windows版本账户设置不一样

解决方法:填写如下图账户信息

总结:

1.公司局域网搭建邮箱服务器推荐使用postfix.
2.脚本文件不建议直接复制,可下载我的资料 https://down.51cto.com/data/2464053
3.文中搭建的邮箱服务器即为公司内部服务器,只能在内网中使用,若要外网使用,需要申请外网域名。

你可能感兴趣的:(Shell 脚本自动安装公司内部邮箱服务器--Postfix)