在测试BMC的邮箱告警功能时,需要搭建SMTP服务器环境,验证BMC的告警日志能够发送到指定的邮箱服务器。测试同事常常因为SMTP服务器环境问题而报bug。为了避免环境不一致和测试方法问题重复报bug,打算把在内网搭建SMTP服务器的过程整理一下,提高工作效率。
因为开发过程中使用的是Linux系统,首先通过查找资料研究了一下在Linux系统下搭建的过程。接着又尝试通过虚拟机安装Windows,在Windows系统下搭建,也获得了成功。下面分别分享一下这两种方式。
一 在Linux环境下搭建
1.1 设置hostname
使用hostname –f
查看当前hostname
使用命令hostnamectl set-hostname
设置为域名
如:hostnamectl set-hostname lhy.mail.com
设置后执行reboot
1.2 安装配置postfix
sudo apt-get update sudo apt-get install postfix –y
安装过程中弹出如下选项,选择Internet Site
使用netstat来查看Postfix的监听情况:
sudo netstat -lnpt
Postfix的master进程监听TCP 25号端口。
执行 sudo nmap <your-server-ip>
命令,确保25号端口是开放的。
编辑配置文件:gedit /etc/postfix/main.cf
取消注释并设置myhostname、mydomain、myorigin、inet_interfaces、inet_protocols、mydestination
参照hostname设置,内容如下:
myhostname = lhy.mail.com mydomain = mail.com myorigin = $mydomain inet_interfaces = all inet_protocols = ipv4 mydestination = $myhostname, $mydomain
启动postfix服务:
systemctl start postfix systemctl enable postfix
1.3 安装配置dovecot
安装:
sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d
编辑配置文件:
apt-get install dovecot-common dovecot-imapd dovecot-pop3d
取消注释并配置
listen = * protocols = pop3 imap mail_location = maildir:/home/%u/Maildir pop3_uidl_format = %08Xu%08Xv disable_plaintext_auth = no
编辑配置文件:
sudo gedit /etc/dovecot/conf.d/10-master.conf
注释文件中的以下几行
#unix_listener auth-userdb { #mode = 0600 #user = #group = #}
并确保未注释以下内容:
# Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }
编辑配置文件:
sudo gedit /etc/postfix/main.cf
为了使Dovecot服务与Postfix服务一起使用,我们需要在Postfix配置文件中添加以下几行:
smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks, reject_unauth_destination broken_sasl_auth_clients = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth
重启服务:
root@mail:$ /etc/init.d/postfix restart root@mail:$ /etc/init.d/dovecot restart
简单测试:
telnet local host 143
telnet local host 110
1.4 安装配置dnsmasq
Ubuntu 18.04附带了systemd-resolve,需要禁用它,因为它绑定到53端口,与Dnsmasq端口冲突。
运行以下命令以禁用已解析的服务:
systemctl disable systemd-resolved systemctl stop systemd-resolved
安装dnsmasq:
apt-get install dnsmasq
在hosts文件中增加 本地IP到域名映射
root@mail:$ vim /etc/hosts 192.168.254.128 mail.coodyz.com # `192.168.254.128`更改为Ubuntu本机局域网IP
启动服务:
root@mail:$ /etc/init.d/dnsmasq start
将服务器的DNS服务器指向Dnsmasq服务器:
sudo gedit /etc/resolv.conf nameserver 127.0.0.1//主要增加此一条 nameserver 8.8.8.8
以上只是修改运行时文件,进行持久配置需编辑/etc/network/interfaces。
通过adduser命令添加用户,增加的用户即为邮箱账户
1.5 SMTP功能测试
在BMC页面配置上面的SMTP服务器地址与邮箱账户地址,点击测试
在/var/mail下查看不同账户收到的邮件,如root;可以通过postconf mail_spool_directory
查看邮件存放位置
二 在Windows环境下搭建
由于使用的开发环境为Linux,是通过在Linux下安装Windows虚拟机来实现的。
2.1 虚拟机Windows安装
在Linux下使用sudo apt-get install virtualbox
安装虚拟机软件
另外发现HP笔记本需要进Bios选项->先进,把配置传统支持和安全引导改为禁用安全引导,否则ubuntu18.04运行虚拟机软件异常。
根据实际安装win10虚拟机后,点击设备->安装增强功能,在Windows虚拟机下会出现CD驱动器选项,打开后根据安装的系统,选择增强功能的安装文件。
安装后在设备选项中选择拖放->双向,即可通过主机向虚拟机拖拽传送文件
2.2 hMailServer安装配置
下载hMailServer安装包,双击运行,选择内置数据库,设置一次密码,其余一路next安装
安装后打开hMailServer,点击connect连接本地的服务
提示输入密码,该密码是我们上面设置的密码,输入后点击ok
进入后,首先需添加一个邮件主体名称,点击Add Domain
设置一个符合标准的域名即可,如test.com
接下来添加账号,点击Domains,然后点击上面设置的域名,下面的Accounts,进入后点击右侧的Add,添加账号。
输入账号名称,和密码,名称我们可以自定义,这里创建的账号就是邮箱账号,账号和密码就是登录邮箱的账号密码。
可以设置两个不同的账户,用于测试。
2.3 foxmail安装配置
下载安装后,打开,点击其他邮箱,手动配置
输入上面创建的账号,服务器地址填写本机地址127.0.0.1
2.4 绑定域名
虚拟机网络设置中选择桥接网卡,通过ipconfig查看虚拟机IP地址
找到C:\windows\system32\drivers\etc\hosts,以管理员身份运行,加入注册的域名,如:
100.2.74.26 test.com(或另存为hosts.txt,重命名去掉后缀,替换上面的文件)
2.5 SMTP功能测试
在BMC页面配置上面的SMTP服务器地址与邮箱账户地址,点击测试
在foxmail应用中,进入账户收件箱,点击左上角收取,查看接收的邮件(也可以在邮箱设置中设置为自动收信)
2.6 邮箱服务器开启SSLTLS
BMC邮箱告警支持SSLTLS功能,验证该功能也需要SMTP服务器支持SSLTLS。这里对于Windows环境下,使用stunnel软件提供支持。
使用stunnel软件提供SSL支持。下载stunnel: http://www.stunnel.org
安装stunnel,默认下一步即可
启动stunnel,点击Configuration->Edit Configuration
在配置文件中注释掉以下内容:
以下内容取消注释:
点击Reload Configuration,重新启动stunnel
在Foxmail中,设置账号-服务器中的两个SSL勾选框为勾选
点击应用,确定。
设置完成后,可以在BMC端开启SSLTLS进行SMTP测试。