一、Postfix邮件服务器
postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。它是由任职于IBM华生研究中心(T.J. Watson Research Center)的荷兰籍研究员Wietse Venema为了改良sendmail邮件服务器而产生的。最早在1990年代晚期出现,是一个开放源代码的软件。
特点
- postfix是免费的
postfix想要作用的范围是广大的Internet用户,试图影响大多数的Internet上的电子邮件系统,因此它是免费的。 - 更快
postfix在性能上大约比sendmail×××倍。一部运行postfix的台式PC每天可以收发上百万封邮件。 - 兼容性好
postfix是sendmail兼容的,从而使sendmail用户可以很方便地迁移到postfix。Postfix支持/var[/spool]/mail、/etc/aliases、 NIS、和 ~/.forward 文件。 - 更健壮
postfix被设计成在重负荷之下仍然可以正常工作。当系统运行超出了可用的内存或磁盘空间时,postfix会自动减少运行进程的数目。当处理的邮件数目增长时,postfix运行的进程不会跟着增加。 - 更灵活
postfix是由超过一打的小程序组成的,每个程序完成特定的功能。你可以通过配置文件设置每个程序的运行参数。 - 安全性
postfix具有多层防御结构,可以有效地抵御恶意***者。如大多数的postfix程序可以运行在较低的权限之下,不可以通过网络访问安全性相关的本地投递程序等等。
邮件:具有法律效应、方便、安全、保持时间长
邮件组成:发件人(用户名@邮件域)+收件人、主题、正文、附件
邮件发送流程
不同邮件域:发件人(用户名@邮件服务器域名) --> 邮件服务器 --> 其他域邮件服务器 --> 收件人([email protected])
同邮件域:发件人(用户名@邮件服务器域名) --> 邮件服务器 --> 收件人([email protected])
邮件服务器种类
发送邮件服务器:SMTP协议(TCP 25),用于将客户端的邮件发送到指定邮件服务器中;smtp.域名
接受邮件服务器:POP3(TCP 110)用户删除邮件后,邮件服务器依然保留该邮件、IMAP4(TCP 143)用户删除邮件后,邮件服务器也删除该邮件。用于将邮件服务器邮件下载到收件人本地;pop.域名、imap.域名
收发邮件的软件
MTA:邮件传输代理:用于实现邮件的发送,一般指邮件服务器,Microsoft Exchange、Postfix、Dovecot、SendMail;使用SMTP协议
MUA:邮件用户代理:用于实现邮件的接受,一般指客户端,Outlook、Foxmail、thunderbird、xchar;使用POP3、IMAP4协议
邮件提供商
共有:QQ邮箱、163网易邮箱、hotmail微软、gmail谷歌、outlook微软等
私有:自建邮件服务器
二、Postfix部署发件服务
1.创建运行用户和组
yum -y install cyrus-sasl-devel* cyrus-sasl-plain* cyrus-sasl-lib* cyrus-sasl-2.1* //安装SASL加密软件包
/etc/init.d/postfix stop && chkconfig --level 35 postfix off //将系统自带服务停止并开机禁用
#useradd -M -s /sbin/nologin postfix //如果系统中没有自带postfix用户则新建
#groupadd postfix //如果系统中没有自带postfix组则新建
#groupadd postdrop //如果系统中没有自带postdrop组则新建
gpasswd -a postfix postfix //将postfix用户加入到Postfix组
gpasswd -a postfix postdrop //将postfix用户加入到postdrop组
2.解压并安装postfix
tar -zxvf postfix-3.2.2.tar.gz -C /usr/src/ //解压源码包
cd /usr/src/postfix-3.2.2/ //进入解压目录
make makefiles 'CCARGS=-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I /usr/include/sasl' 'AUXLIBS=-L/usr/lib64/sasl2 -lsasl2' //配置安装
//生成Mailfile配置文件,并启动sasl认证、指定依赖库文件位置
//CCARGS:启用SASL认证,并指定SASL头文件存储位置
//AUXLIBS:指定额外的函数库文件位置
make && make install //编译并安装
3.编辑配置文件
postconf -n >/tmp/hehe.conf //将有效的配置文件导出
mv /tmp/hehe.conf /etc/postfix/main.cf
vim /etc/postfix/main.cf
9 inet_interfaces = 192.168.1.10 //指定监听IP
10 myhostname = mail.xueluo.org //新增,指定当前主机名
11 mydomain = xueluo.org //新增,指定邮件域
12 myorigin = $mydomain //新增,外发邮件时发送中邮件域
13 home_mailbox = Maildir/ //新增,邮件的存储位置(存储到用户的家目录)
19 mydestination = $myhostname,$mydomain //允许投递的目标邮件域
postfix start //启动postfix服务
4.SMTP邮件测试
groupadd mailusers //新建邮件用户组
useradd -s /sbin/nologin -g mailusers hehe //新建邮件用户加入新建的组
useradd -s /sbin/nologin -g mailusers haha
echo "123" | passwd --stdin hehe //为新建的用户设置密码
echo "123" | passwd --stdin haha
yum -y install telnet //安装远程连接工具
telnet mail.xueluo.org 25 //连接到邮件服务器的25端口
HELO mail.xueluo.org //宣告客户端地址
MAIL FROM:[email protected] //告知发件人地址
RCPT TO:[email protected] //告知收件人地址
DATA //告知要发送的邮件数据
Subject: He is he //指定邮件标题
heh is hehe !!! //撰写邮件正文
. quit //邮件编写完毕并退出
quit //退出连接
ls /home/haha/Maildir/new/ //验证发件服务器是否无误,查看是否有新邮件
Dovecot 部署收件服务
1.创建运行用户
useradd -M -s /sbin/nologin dovecot
useradd -M -s /sbin/nologin dovenull
2.源代码编译安装
tar -zxvf /root/dovecot-2.2.31.tar.gz -C /usr/src/
cd /usr/src/dovecot-2.2.31/
./configure --sysconfdir=/etc/ //配置dovecot的配置文件存储目录
make && make install
3.拷贝模版文件
cp doc/dovecot-initd.sh /etc/init.d/dovecot //拷贝启动脚本文件
chmod +x /etc/init.d/dovecot
chkconfig --add dovecot //将dovecot注册为系统服务
cp -r /usr/local/share/doc/dovecot/example-config/* /etc/dovecot/ //拷贝模版配置文件
4.新建PAM认证模块
vim /etc/pam.d/dovecot
#%PAM-1.0
auth required pam_nologin.so
auth include system-auth
account include system-auth
session include system-auth
5.编辑配置文件
vim /etc/dovecot/dovecot.conf
#!include conf.d/*.conf //注释该行,位于98行
!include conf.d/10-auth.conf //只使用系统用户认证
ssl = no //禁用SSL
disable_plaintext_auth = no //允许明文验证
mail_location = maildir:~/Maildir //指定邮箱的位置
6.启动服务并验证
/etc/init.d/dovecot restart //重启dovecot服务
telnet mail.xueluo.org 110 //连接到邮件服务器的110端口(POP3)
USER haha //指定登录用户
PASS 123 //指定用户
LIST //查看邮件列表
RETR 1 //查看你第一封邮件
QUIT
DNS部署
为了邮件客户端能自动扫描到收发邮件服务器的主机名部署一台DNS
一块网卡为vmnet1
1.修改网络配置
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
DNS1=192.168.1.10
/etc/init.d/network restart //重启网络服务
vim /etc/sysconfig/network //修改主机名
HOSTNAME=ns.xueluo.org
2.安装bind软件包
yum -y install bind bind-utils
3.编辑主配置文件
vim /etc/named.conf
options {
listen-on port 53 { 192.168.1.10; }; //设置监听IP地址;需修改
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;}; //删除该行
recursion yes;
dnssec-enable no; //bind安全检测机制;需修改
dnssec-validation no; //bind安全检测机制;需修改
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "xueluo.org" IN { //指定正向解析域为xueluo.org
type master; //指定DNS类型,为主DNS服务器
file "xueluo.org.zone"; //正向解析文件
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
cp /var/named/named.empty /var/named/xueluo.org.zone //拷贝DNS模版文件并重命名
vim /var/named/xueluo.org.zone
$TTL 86400(TTL值,生命周期)
@ IN SOA xueluo.org.(需要解析的域名) admin.xueluo.org.(管理员邮箱) (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.xueluo.org. //NS记录(起始授权记录);输入DNS服务器的主机名
ns IN A 192.168.1.10 //DNS服务器对应的IP地址
IN MX 10 mail.xueluo.org. //MX记录
mail IN A 192.168.1.10 //mail.xueluo.org对应的IP
chown named:named /var/named/xueluo.org.zone //将正向解析文件的属主和属组设置为named用户
4.重启服务
/etc/init.d/named start && chkconfig --level 35 named on \\重启服务并设置为35级别的开机自启
5.验证
客户端设置DNS为DNS服务器的IP地址
安装邮件客户端-->输入用户名@邮件域名和密码,应该能自动识别到收发邮件服务器的主机名-->实现邮件通信