Shell 脚本自动安装公司内部邮箱服务器--Postfix
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.网络模式:NAT模式
实验步骤
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.脚本文件不建议直接复制,可下载我的资料
3.文中搭建的邮箱服务器即为公司内部服务器,只能在内网中使用,若要外网使用,需要申请外网域名。
以上是关于Shell 脚本自动安装公司内部邮箱服务器--Postfix的主要内容,如果未能解决你的问题,请参考以下文章
shell写自动安装脚本自动读取license和自动输入回车
Linux学习-->如何通过Shell脚本实现发送邮件通知功能?