Redhat8安装Postfix邮件服务
设置主机名
[root@localhost ~]# hostnamectl set-hostname hdkk-server.com
硬件配置
内存:4G
硬盘:200G
CPU:2
网络:Bridge
[root@hdkk-server ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.2 (Ootpa)
[root@hdkk-server ~]# ip a | grep -A3 ens160: | grep inet | awk '{print $2}'
172.16.186.128/24
关闭防火墙和selinux
[root@hdkk-server ~]# systemctl stop firewalld && systemctl disable firewalld
[root@hdkk-server ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
更新系统
[root@hdkk-server ~]# dnf -y update
卸载其他MTA(如sendmail),如不卸载sendmail将会导致和postfix配置冲突,8.2应未自带sendmail
[root@hdkk-server ~]# dnf -y remove sendmail
更新hosts
[root@hdkk-server ~]# echo -e "172.16.186.128\thdkk-server.com" >>/etc/hosts
安装postfix邮件服务器和mailx邮件客户端
[root@hdkk-server ~]# dnf -y install postfix mailx
[root@hdkk-server ~]# systemctl start postfix && systemctl enable postfix
[root@hdkk-server ~]# systemctl status postfix | grep Active | awk '{print $3}'
配置postfix邮件服务器
Postfix 的配置文件在/etc/postfix/main.cf中
[root@hdkk-server ~]# vim /etc/postfix/main.cf
# 邮件服务器的位置,默认为打开状态
queue_directory = /var/spool/postfix
# 邮件服务器的命令,默认为打开状态
command_directory = /usr/sbin
# 邮件服务器可执行程序位置,默认为打开状态
daemon_directory = /usr/libexec/postfix
# 邮件服务器数据库的存放位置
data_directory = /var/lib/postfix
# 服务器的运行身份
mail_owner = postfix
# 邮件服务器的主机名称 (需要改成自己定的)这个正常的情况就是我们服务器的的域名作为邮件的邮件域,同时也可用域作为邮件域,发总邮件是可以是zhangsan@hdkk-server.com、也可以是zhangsan@mail.hdkk-server.com,比如主机的域名为mail.hdkk-server.com
myhostname = hdkk-server-1
# 服务器的域 (自行开启,改成@后面的部分,不含@)
mydomain = server.com
# 允许发送邮件用户的邮件域是谁 (自行开启),就是说哪些用户可以通过这个邮件服务器发邮件呢?就是$后面设置的这个域。(不用改)
myorigin = $mydomain
# 用来设置监听的地址 (自行开启)
inet_interfaces = localhost 改为 inet_interfaces = all
# 使用的协议 (默认开启)
inet_protocols = all
# 注释该行
#mydestination = $myhostname, localhost.$mydomain, localhost
# 用来设置本邮件服务器允许接收哪些地址发来的的邮件
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 收到未知用户的邮件的时候返回的一个错误代码(默认开启)
unknown_local_recipient_reject_code = 550
# 更换IP范围,这里表示只接收186.0段
mynetworks = 172.16.186.0/24, 127.0.0.0/8
# 邮件别名,有用,默认开启
alias_maps = hash:/etc/aliases
# 搭配上一条使用,意思为使用别名时需要的数据库
alias_database = hash:/etc/aliases
# 邮件的存放位置,默认不开启,一共2个,开Maildir/ 这个(Maildir后面带/)
home_mailbox = Maildir/
重启postfix服务
[root@hdkk-server ~]# systemctl restart postfix
添加测试用户
[root@hdkk-server ~]# useradd zhangsan
[root@hdkk-server ~]# echo 123456 | passwd "zhangsan" --stdin
[root@hdkk-server ~]# useradd lisi
[root@hdkk-server ~]# echo 123456 | passwd "lisi" --stdin
本地测试postfix邮件服务
[root@hdkk-server ~]# dnf -y install telne
[root@hdkk-server ~]# telnet localhost smtp 或者 telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
# 下行连接成功标示
220 hdkk-server-1 ESMTP Postfix
# 下行手动输入,helo声明当前邮件服务器的域名
helo hdkk-server.com
250 hdkk-server.com
# 邮件从谁那发出来的,zhangsan发的
mail from:zhangsan@hdkk-server.com
250 2.1.0 Ok
# 发给lisi的
rcpt to:lisi@hdkk-server.com
250 2.1.5 Ok
# 手动输入data,表示邮件的正文,邮件正文可输入多行
data
354 End data with.
# 正文内容为lisi 你吃饭了么?
lisi 你吃饭了么?
# 另起一行输入一个点,而后回车表示正文结束
.
# 结束标志
250 2.0.0 Ok: queued as 842CCD6DB5
# 手动输入quit进行退出
quit
221 2.0.0 Bye
# 邮件发送完毕,连接断开
Connection closed by foreign host.
注:在上述连接成功后画面将停止不动才是正确的回显,需注意。按 ctrl + ] 则进入下一个命令行
telnet>
注:输入 q 即可退出
检验邮件有没发送成功
postfix邮件服务器日志
[root@hdkk-server ~]# tail -f /var/log/maillog
将邮件传输加密
建议始终确保客户端和 Postfix 服务器之间的通信安全,这可使用 SSL 证书来实现,如只测试则不需要,否则必须来自受信任的权威机构或自签名证书
[root@hdkk-server ~]# dnf -y install openssl
生成私钥和 CSR(证书签名请求)
[root@hdkk-server ~]# openssl req -nodes -newkey rsa:2048 -keyout mail.key -out mail.csr
....
....
Country Name (2 letter code) [XX]:CN # 国家名称
State or Province Name (full name) []:GD # 州或省名称
Locality Name (eg, city) [Default City]:GZ # 城市名称
Organization Name (eg, company) [Default Company Ltd]:admin # 机构名称
Organizational Unit Name (eg, section) []:admin # 组织单位名称
Common Name (eg, your name or your server's hostname) []:admin # 通用名称
Email Address []:hdkk-server.com
Please enter the following 'extra' attributes # 请输入以下“额外”属性
to be sent with your certificate request # 随您的证书申请一起发送
A challenge password []:123456 # 质询密码[]:
An optional company name []:123456 # 可选公司名称[]:
使用openssl 命令生成自签名证书:
[root@hdkk-server ~]# openssl x509 -req -days 3650 -in mail.csr -signkey mail.key -out mail.crt
将私钥和证书文件复制到 /etc/postfix 目录下:
[root@hdkk-server ~]# cp mail.key mail.crt /etc/postfix/
在 Postfix 配置文件中更新私钥和证书文件的路径:
[root@hdkk-server ~]# vim /etc/postfix/main.cf
smtpd_tls_cert_file = /etc/postfix/mail.crt
smtpd_tls_key_file = /etc/postfix/mail.key
smtpd_tls_security_level = may
重启 Postfix 服务以使上述更改生效:
[root@hdkk-server ~]# systemctl restart postfix
检查 Postfix 邮件队列
[root@hdkk-server ~]# mailq
暂未找到可替代extmail的开源软件,所以先做到这里,后期找到了再继续补充该文档