Linux&&Postfix&&sendEmail&&邮件服务
了解邮件服务器
邮件系统包含哪几个邮件系统角色?
MUA(邮件用户代理)
管理客户端的邮件发出,将客户端的邮件发送到邮件系统端的MTA。
MTA(邮件传输代理)
实现不同邮件系统间的邮件传输,基于SMTP协议完成邮件发送(传输)。
MDA(邮件分发代理)
管理邮件系统端的邮件分发,将收到的邮件分发到客户端。
邮件服务的相关协议有哪些?
SMTP
简单邮件传输协议,监听在TCP的25端口
POP3
第三版邮局协议,监听在TCP的110端口
IMAP4
第四版互联网消息访问协议,监听在TCP的143端口
客户端1:客户端通过访问邮件系统端的143/110端口来取自己的邮件。一般使用POP3协议取自己的邮件。
客户端2:webmail是处在邮件系统端的web页面的邮件收发系统。客户端通过80端口访问web页面的邮件收发系统平台。一般使用IMAP协议取自己的邮件。
webmail与MUA客户端功能类似。
工作示意图
常见的MTA邮件服务器软件
常见的邮局服务有哪些?
dovecot
常见的webmail邮件客户端有哪些?
squirrelmail
常见的MUA邮件客户端有哪些?
Foxmail
Postfix邮件服务器
Postfix(MTA)邮件服务器搭建
如果服务器默认安装了sendmail服务,则关闭该服务
/etc/init.d/sendmail stop
chkconfig --level 2345 sendmail off
Postfix源码编译、安装
#创建程序组
groupadd -g 1200 postdrop
groupadd -g 1000 postfix
##创建程序用户postfix
useradd -M -u 1000 -g postfix -G postdrop -s /sbin/nologin postfix
#解压postfix源码包、编译前配置、编译安装
tar zxf postfix-2.11.3.tar.gz
cd postfix-2.11.3
make makefiles 'CCARGS=-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl' 'AUXLIBS=-L/usr/lib/sasl2 -lsasl2'
make && make install
#安装时提示设置服务安装根目录等操作,均采用默认即可。
#查看postfix配置文件的有效配置
cd /etc/postfix/
postconf
#查看非默认配置
postconf -n
#查看默认配置
postconf -d
#简化配置文件.本质上就是把主配置文件备份,并用非默认配置命令形成新的主配置文件。
postconf -n > tmp.file
mv /etc/postfix/main.cf /etc/postfix/main.cf.bak
mv tmp.file /etc/postfix/main.cf
Postfix的主要目录
incoming : 刚刚收到的邮件
active : 正在投递的邮件
deferred : 延迟转发的邮件
hold : 邮件过滤,配合杀毒软件检测邮件是否安全
corrupt : 损坏的邮件,如邮箱格式填写的异常的邮件或外域邮件地址。
postconf : 简化配置文件的目录
postfix : 启动控制脚本
安装、配置dns服务
yum clean all
yum -y install bind bind-chroot
vim /etc/named.conf
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/*等等等等
配置本地监听和禁用允许访问队列这些*/
}
vim /etc/named.rfc1912.zones
zone "test.com" in {
type master;
file "test.com";
};
cd /var/named/
vim test.com
@TTL 1D
@ IN SOA @ rname.invalid. (
0
1D
1H
1W
3H)
in ns dns
dns in a 192.168.75.111
@ in mx 5 mail
mail in a 192.168.75.111
vim /etc/resolv.conf
nameserver 192.168.75.111
#重启服务生效
service named restart
配置Postfix服务
vim /etc/postfix/main.cf
#监听在哪个网卡
inet_interfaces=192.168.75.111,127.0.0.1
#配置主机名全称
myhostname=mail.test.com
#配置为哪个域服务
mydomain=test.com
#定义邮件服务器向外发送邮件时使用的域名
myorigin=$mydomain
#定义当前邮件服务器为哪些类型的域名提供服务
mydestination=$mydomain,$myhostname
#定义邮件存放目录。默认邮件保存在/var/spool/mail/目录下。
home_mailbox=Maildir/
#运行邮件服务
postfix start
#检测是否已启动
netstat -ant | grep :25
home_mailbox=Maildir/ : 每个用户在其宿主目录下创建邮件保存目录Maildir并以单个文件的形式存放邮件。
发送邮件测试
#添加测试账号
useradd u1
useradd u2
#发送邮件测试
telnet mail.test.com 25
#与邮件服务器打招呼
helo localhost
#邮件发送
mail from: u1@test.com
#指定邮件接收用户
rcpt to: u2@test.com
#定义邮件内容。第一行以data开头代表邮件内容开始。最后一行以点开头代表邮件内容结束。
data
this is test mail
.
#退出
quit
#查看邮件发送记录
ls /var/spool/postfix/defer/0/*
#启动postfix服务 postfix start
#查看postfix的运行状态 postfix status
postfix check
postfix reload
/var/spool/postfix/defer/0/* : 发送失败邮件的保存记录
配置dovecot邮局服务,允许客户端接收邮件
#解压
tar zxf dovecot-2.0.21.tar.gz
#创建程序用户
useradd -M -s /sbin/nologin dovecot
useradd -M -s /sbin/nologin dovenull
#编译、安装
cd dovecot-2.0.21
./configure --sysconfdir=/etc && make && make install
#配置为系统服务
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/
#配置dovecot配置文件,指明由其负责验证。
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
#配置主配置文件dovecot.conf
vim /etc/dovecot/dovecot.conf
#定义包含子文件
!include conf.d/10-auth.conf
#暂不启动https
ssl=no
#禁止明文认证
disable_plaintext_auth=no
#邮件存放路径
mail_location=maildir:~/Maildir
service dovecot restart
#此时dovecot服务同时监听了110和143端口
配置禁止非法(匿名用户)随意发送邮件
即实现SMTP认证
结合Cyrus SASL(简单认证安全协议)软件实现
#设置Cyrus SASL函数库,并启动saslauthd服务
##建立SMTP认证配置文件smtpd.conf。基于saslauthd完成口令检查
vim /usr/lib64/sasl2/smtpd.conf
pwcheck_method:saslauthd
/etc/init.d/saslauthd start
chkconfig --level 35 saslauthd on
#添加SMTP认证支持,并重载服务
vim /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
mynetworks = 127.0.0.1
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
##重新加载postfix服务
postfix reload
#此时Foxmail邮件客户端将无法正常发送邮件。因为开启了邮件合法性认证功能,邮件需要带有认证请求标识,需要设置“工具”》“账户”》“选择当前邮件账户”》“属性”》“服务器”》勾选“我的服务器要求身份验证”即可。
基于网页端的webmail邮件客户端搭建
#部署LAMP环境
yum clean all
yum -y install httpd mysql-server php php-mysql
#部署squirrelMail到网站目录
tar zxf sqirrelmail-1.4.22.tar.gz -C /var/www/html/
tar zxf zh_CN-1.4.22-20110425.tar.gz -C /var/www/html/squirrelmail-1.4.22/
mv /var/www/html/squirrelmail-1.4.22/ /var/www/html/webmail
#创建数据目录、附件目录
cd /var/www/html/webmail/
mkdir -p data/ attach/
#修改属主属组
chown -R apache.apache data/ attach/
#配置webmail主配置文件
cp config/config_default.php config/config.php
vim config/config.php
<?php
#定义域名
$domain = 'test.com';
#定义发件服务器ip地址
$smtpServerAddress = 'localhost';
#定义端口号
$smtpPort = 25;
#定义收件服务器ip地址
$imap_server_type = 'dovecot';
$imapPort = 143;
#定义数据文件存放路径
$data_dir = '/var/www/html/webmail/data/';
#定义附件文件存放路径
$attachment_dir = '/var/www/html/webmail/attach/';
#定义webmail界面语言
$squirrelmail_default_language = 'zh_CN';
#定义字符集
$default_charset = 'zh_CN.UTF-8';
?>
通过浏览器访问webmail网站
发送邮件测试
通过别名设置邮件组
vim /etc/postfix/main.cf
#启动支持别名功能
alias_maps = hash:/etc/aliases
#重新加载服务
postfix reload
#添加别名设置.配置别名查询表
vim /etc/aliases
student:zhangsan,lisi,wangwu,zhouliu
teacher:qwe,asd
#更新别名数据库
newaliases
#重新加载服务
postfix reload
别名必须是非系统用户!
邮箱大小限制
基于pc端的Foxmail邮件客户端使用
- 百度下载Foxmail软件并安装
- 打开Foxmail软件,登录一个可用的邮箱账号。
- 打开“手动设置”,设置接收服务器类型为“POP3”
- List item
基于pc端的Outlook Express邮件客户端使用
- 设置pc端的dns地址为192.168.75.11
- 打开Outlook Express软件
- 填写发送者名称、发送邮箱账号、接收邮件服务器域名、发送邮件服务器名称
- 登录邮箱账号
- 向u2发送邮件测试
- 服务器端配置完成dovecot邮局服务后,就可以使用收邮件功能从邮局下载邮件到本地啦。
sendEmail邮件服务器
基于shell的sendEmail发送邮件
/usr/local/bin/sendEmail-v1.56/sendEmail -f 15510102841@163.com -t '.$email.' -s smtp.163.com -u "来自易博通的会议邀请" -o message-content-type=html -o message-charset=utf8 -xu 737211338@163.com -xp qwe123qwe -m "易博通客户,您好:您的朋友'.$name.'邀请您参加视频会议,请及时参加会议!房间名称:'.$room_name.',房间密码:'.$room_password.',客户端下载地址:'.$url.'。谢谢。来自可爱的易博通。"
43:00