linux 电子邮件服务器Postfix安装与配置
一,基本电子邮件发送
电子邮件发送
服务器使用SMTP协议将电子邮件提交至TCP端口25,或由本地客户端通过/usr/bin/sendmail程序进行提交。如果该MTA是最终目标位置,邮件将传递至MDA。否则,将使用MX记录在DNS中查找下一个MTA,并使用SMTP进行转发。
MDA:“邮件发送代理”。
MDA将邮件发送至收件人的本地邮件存储位置(默认情况下是/var/spool/mail/user)。Postfix提供自己的MDA,以发送至基于文件的本地默认邮件存储位置/usr/libexec/postfix/local.
转发:电子邮件服务器(MTA)将提交的邮件转发至另一个服务器,以进行发送
排队:失败的发送或转发尝试排队等待,并由MTA定义重试。(默认情况下,Postfix每小时执行此操作一次)
拒绝:在首次提交期间,电子邮件被电子邮件服务器拒绝
退回:远程服务器接受电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器和/或用户34Postfix由postfix RPM包提供,并通过postfix服务脚本控制。它是一个由多个协同操作程序构成的模块化程序,它的组件由master进程控制。Postfix的主配置文件是/etc/postfix/main.cf,可以使用编辑器或postconf命令进行编辑。postconf命令还可用于确定Postfix的所有当前和默认配置设置或逐项确定这些设置。
默认情况下,Postfix仅侦听来自本地主机的传入电子邮件。若要重新配置postfix以接收从远程主机发送的本地邮件,必须在/etc/postfix/main.cf中设置inet_interfaces = all
对电子邮件进行故障排除时,将在/var/log/maillog中保留所有与邮件相关的操作日志,其中包括关于被事件和成功事件的信息。mailq命令(或postqueue -p)显示已排队的所有传出邮件的列表。若要尝试再次立即发送所有已排队的邮件,可以运行postfix flush命令(或postqueue -f);否则,postfix将大约每小时尝试重新发送一次,直至邮件被接受或过期。
5重要的Postfix配置指令
可以在/etc/postfix/main.cf文件中找到以下所有指令。
myorigin
重写本地发布的电子邮件,使其显示为来自该域。这样有助于确保响应返回入站邮件服务器
默认:myorigin =
myhostnameinetinterfaces控制Postfix侦听传入电子邮件的网络接口。如果设置为loopback−only,仅侦听127.0.0.1和::1,如果设置为all,则侦听所有网络接口。还可以指定特定地址。默认:inetinterfaces=localhostmydestination收到地址为这些域的电子邮件将传递至MDA,以进行本地发送。默认:mydestination=
myhostname, localhost.
mydomain,localhostmynetworksIP地址和网络的逗号分隔列表(采用CIDR表示法)。这些地址和网络可以通过此MTA转发至任何位置,无需进一步身份验证。默认:mynetworks=127.0.0.0/86relayhostrelayhost转发所有通过的出站邮件。通常用方括号指定,以阻止MX记录查找。默认:relayhost=localtransport收件地址为
mydestination的邮件的发送方式。默认情况下,设置为local:
myhostname(使用LocalMDA将传入电子邮件发送到/var/spool/mail中的本地邮件存储位置)默认:localtransport=local:
myhostname
postconf -d 显示默认值。
postconf -n显示不同于默认值的更改。
7空壳邮件客户端
实际上,大多数组织不再只用一个邮件服务器来处理所有入站和出战电子邮件。相反,出于安全方面的考虑邮件服务器专门针对特定角色进行了设置,以便可以面向其具体针
对的应用程序更好标准角色包括:null客户端:运行本地MTA的客户端计算机,使所有电子邮件都可以转发至中央邮件服务器以进行发送,null客户端不接受任何电子邮件的本地发送。
仅入站邮件服务器:在站点处理用户的所有传入电子邮件,并将之传递给MDA以发送至用户邮件存储位置的邮件服务器。在实际情况中,通常会在仅入站邮件服务器前端安装反垃圾邮件服务器或设备,以
过滤垃圾邮件并且仅将正常邮件转发至入站邮件服务器。
出站邮件转发:出站邮件转发(或“smarthost”)接收所有出站邮件,并使用MX记录和SMTP协议将邮件转发至目标位置 。
1.基本dns配置
(1)服务端
[root@mail-qq ~]# yum install bind -y
[root@mail-qq ~]# systemctl stop firewalld
[root@mail-qq ~]# vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; 设置为any
// listen-on-v6 port 53 { ::1; }; 设置为any
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;
// allow-query { localhost; }; 设置为any
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-enable yes;
dnssec-validation no; 未注册
[root@mail-qq ~]# vim /etc/named.rfc1912.zones
zone “qq.com” IN { 配置westos和qq的dns信息
type master;
file “qq.com.zone”;
allow-update { none; };
};
zone “westos.com” IN {
type master;
file “westos.com.zone”;
allow-update { none; };
[root@mail-qq ~]# cd /var/named
[root@mail-qq named]# ls
data named.ca named.localhost slaves
dynamic named.empty named.loopback
[root@mail-qq named]# cp named.localhost westos.com.zone -p
[root@mail-qq named]# cp named.localhost qq.com.zone -p
[root@mail-qq named]# ls
data named.ca named.localhost qq.com.zone westos.com.zone
dynamic named.empty named.loopback slaves
[root@mail-qq named]# vim westos.com.zone
[root@mail-qq named]# cp westos.com.zone qq.com.zone -p
cp: overwrite ‘qq.com.zone’? y
[root@mail-qq named]# vim qq.com.zone
[root@mail-qq named]# vim qq.com.zone
[root@mail-qq named]# vim westos.com.zone
[root@mail-qq named]# systemctl restart named
[root@mail-qq named]# cat westos.com.zone
TTL 1D
@ IN SOA dns.westos.com. root.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.161
westos.com. MX 1 172.25.254.162.
[root@mail-qq named]# cat qq.com.zoneTTL 1D
@ IN SOA dns.qq.com. root.qq.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.qq.com.
dns A 172.25.254.161
qq.com. MX 1 172.25.254.161.
[root@mail-qq named]# vim /etc/resolv.conf
[root@mail-qq named]# cat /etc/resolv.conf
Generated by NetworkManager
search qq.com
nameserver 172.25.254.161 主dns
No nameservers found; try putting DNS servers into your
ifcfg files in /etc/sysconfig/network-scripts like so:
#
DNS1=xxx.xxx.xxx.xxx
DNS2=xxx.xxx.xxx.xxx
DOMAIN=lab.foo.com bar.foo.com
(2)客户端
[root@mail-westos ~]# vim /etc/resolv.conf
[root@mail-westos ~]# cat /etc/resolv.conf
Generated by NetworkManager
search westos.com
nameserver 172.25.254.161
No nameservers found; try putting DNS servers into your
ifcfg files in /etc/sysconfig/network-scripts like so:
DNS1=xxx.xxx.xxx.xxx
DNS2=xxx.xxx.xxx.xxx
DOMAIN=lab.foo.com bar.foo.com
2.修改配置文件/etc/postfix/main.cf
(1)服务端
[root@mail-qq named]# vim /etc/postfix/main.cf
line:76 myhostname = mail-qq.qq.com 设置主机名称
line:83 mydomain = qq.com 设置本地域名
line:99 myorigin = myhostname 设置邮件头中的mail from 值
line:116 inet_interfaces = all 设置监听地址
line:164 mydestination=
myhostname
mydomain,localhost 设置收信地址
[root@mail-qq named]# systemctl restart postfix.service
[root@mail-qq named]# mail root@westos.com
Subject: test
123456
.
EOT
[root@mail-qq named]# mailq
Mail queue is empty
(2)测试端
[root@mail-westos ~]# vim /etc/postfix/main.cf
line:76 myhostname = mail-qq.qq.com 设置主机名称
line:83 mydomain = qq.com 设置本地域名
line:99 myorigin = myhostname 设置邮件头中的mail from 值
line:116 inet_interfaces = all 设置监听地址
line:164 mydestination=
myhostname
mydomain,localhost 设置收信地址
[root@mail-westos ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
“/var/spool/mail/root”: 1 message 1 new
N 1 root Sat Apr 22 03:42 21/715 “test”
& q
Held 1 message in /var/spool/mail/root
You have mail in /var/spool/mail/root
3.远程主机发邮件
(1)远程主机
[root@foudation61 ~]# telnet 172.25.254.161 25
Trying 172.25.254.161…
Connected to 172.25.254.161.
Escape character is ‘^]’.
220 mail-qq.qq.com ESMTP Postfix
mail from:root@qq.com
250 2.1.0 Ok
rcpt to:root@westos.com
250 2.1.5 Ok
data
354 End data with .
test
test
test
.
250 2.0.0 Ok: queued as 631CB37E127
quit
221 2.0.0 Bye
Connection closed by foreign host.
(2)接受端
[root@mail-westos ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
“/var/spool/mail/root”: 2 messages 1 new 2 unread
U 1 root Sat Apr 22 03:42 22/725 “test”
N 2 root@qq.com Sat Apr 22 04:03 15/495
4.dovecot的使用与安装(代收其他用户邮件,也可远程代收)
[root@mail-westos ~]#yum install dovecot -y
[root@mail-westos ~]# vim /etc/dovecot/dovecot.conf
49 disable_plaintext_auth = no
24 protocols = imap pop3 lmtp
[root@mail-westos ~]# vim /etc/dovecot/conf.d/10-mail.conf
30 mail_location = mbox:~/mail:INBOX=/var/mail/%u
[root@mail-westos ~]# cd /var/mail
[root@mail-westos mail]# ls
root rpc student
[root@mail-westos mail]# su - student
[student@mail-westos ~] mkdir−p/home/student/mail/.imap[student@mail−westos ] touch /home/student/mail/.imap/INBOX
[student@mail-westos ~]$ logout
[root@mail-westos mail]# systemctl restart dovecot
[root@mail-westos mail]# yum install mutt -y
[root@mail-qq named]# mail student@westos.com
Subject: test
test
test
.
EOT
[root@mail-qq named]# mailq
Mail queue is empty
[root@mail-westos mail]# mail -u student
Heirloom Mail version 12.5 7/5/10. Type ? for help.
“/var/mail/student”: 1 message 1 new
N 1 root Sat Apr 22 04:27 22/730 “test”
& q
Held 1 message in /var/mail/student
[root@mail-westos mail]# mutt -f pop:/student@172.25.254.162
进入后输入用户密码,登录即可查看到
5软件thunderbird(postfix)客户端
1.下载thunderbird软件
2.编辑配置文件/etc/dovecot/dovecot.conf
![]()
3执行thunderbird命令。打开客户端。
![]()
![]()
![]()
![]()
![]()
![]()