配置邮件服务器
基础邮件服务
电子邮件服务器的基本功能
Ø 为用户提供电子邮箱存储空间(用户名@邮件域)
Ø 处理用户发出的邮件——传递给收件服务器
Ø 处理用户收到的邮件——投递/存储到邮箱
注:DNS起导航员的作用,引导用户发送给哪个邮箱服务器(识别ip)等
搭建基本邮件服务器
Ø 用户发邮件的协议 :SMTP 端口号 25(TCP 25,SMTP)
Ø 用户收邮件的协议 :pop3 端口号 110 IMAP 端口号 143
标配邮件服务器:本机的程序 ==》本机的postfix邮件服务器
普通邮件服务器:本机或其他主机的程序 ==》postfix邮件服务器
快速部署postfix邮件服务器
• 装包、配置、起服务
Ø 默认的标准配置即可为本机提供发/收邮件服务
Ø 若有必要,可扩大服务范围(邮件域)
(监听端口号为 TCP 25 SMTP):
使用mail命令发信/收信
发信操作:mail ---> 本机postfix
mail -s :邮件的主题
-r:发件人
-u:查看指定用户的邮件
mail -s “邮件标题” 收件人[@收件域]
----回车输入邮件内容最后以.结束 或【Ctrl + d 提交】
非交互式发邮件
1.利用管道: echo “内容” | mail -s “主题” -r 发件人 收件人
2.利用重定向输入 < 可以将文本文件的内容,当作命令的输入
mail -s '邮件标题' 收件人地址 < 邮件正文.txt
收信操作:mail ---> 本机的用户邮箱
mail [-u 用户名]
mail -f 邮箱位置
其他的邮件客户端软件:Outlook、Foxmail、Thunderbird、手机邮箱
补充 【/etc/mail.rc】
用户邮箱位置:
/var/spool/mail/用户名
home_mailbox = Maildir 【~用户/Maildir文件】
home_mailbox = Maildir/ 【~用户/Maildir目录】
###############################################################################
示例:搭建postfix基础邮件服务
在虚拟机server0上配置 postfix 基础服务,具体要求如下:
监听本机的所有接口 将邮件域和邮件服务主机名都改为 server0.example.com
然后在server0上使用mail命令测试发信/收信操作:
由 yg 给虚拟机desktop0用户 xln 发一封测试邮件
查收用户 xln 的邮箱,读取邮件内容,确保是从 [email protected] 发过来的
步骤一:在Server0上配置postfix基础邮件服务
1.设置永久的主机名) # echo server0.example.com > /etc/hostname
2.安装postfix软件包 # yum -y install postfix
3.修改配置文件/etc/postfix/main.cf
99行 myorigin = server0.example.com //默认补全的(发件人)域名后缀
116行 inet_interfaces = all //设置监听的网络接口(所有)
164行 mydestination = server0.example.com //符合(的收件人)域名的判定为本域邮件
4.重起postfix服务:systemctl restart postfix
5.查看邮件服务监听状态 # netstat -antpu | grep :25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1739/master
tcp6 0 0 :::25 :::* LISTEN 1739/master
步骤二:使用mail命令发信/收信
创建测试用户# useradd yg
# echo 123 | passwd --stdin yg //创建yg用户,设置密码123
1)给用户root发一封测试邮件
#mail -s '葵花宝典' -r yg xln
I find it!!!!
. //系统以点做为单独一行作为结束邮件编辑标识
EOT
此处也可用非交互发邮件:# echo 'I find it!!!!' | mail -s '葵花宝典' -r xln
步骤三:在desktop0上配置postfix基础邮件服务(desktop0.example.com)
1.设置永久的主机名 # echo desktop0.example.com > /etc/hostname
2.安装postfix软件包 # yum -y install postfix
3.修改配置文件/etc/postfix/main.cf
.. ..
myhostname = desktop0.example.com //本机的主机名
99行 myorigin = desktop0.example.com //默认补全的(发件人)域名后缀
116行 inet_interfaces = all //设置监听的网络接口(所有)
164行 mydestination = desktop0.example.com //符合(的收件人)域名的判定为本域邮件
4.重起postfix服务:systemctl restart postfix
步骤二:使用mail命令发信/收信
创建测试用户 # useradd xln
# echo 123 | passwd --stdin xln //创建xln用户,设置密码123
# mail -u xln
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/xln": 1 message 1 new
>N 1 [email protected] Sat Aug 26 11:02 18/604 "葵花宝典"
& 1 //读取第1封邮件内容
Message 1:
From [email protected] Sat Aug 26 11:02:23 2017
Return-Path:
X-Original-To: xln
Delivered-To: [email protected]
Date: Sat, 26 Aug 2017 11:02:23 +0800
From: [email protected]
Subject: 葵花宝典 //检查邮件标题
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
Status: R
I find it!!!! //检查邮件内容
& q //按q退出mail程序
###############################################################################
nullclient邮件服务
nullclient,空客户端
本机程序 ==》postfix邮件服务器 ==》后端邮件服务器
Ø 不提供任何邮箱帐号,因此不需要投递邮件 (类似于秘书,代发邮件)
Ø 但是可以为用户代发邮件
postfix空客户端邮件服务器的功能:
Ø 不为用户提供电子邮箱
Ø 为邮箱用户向其他邮件服务器发送邮件 (条件:后端普通邮件服务器)
Ø 不接受(投递/存储)发送给给本服务器的邮件
空客户端邮件服务器的工作环境:
客户端 ---> 空客户端邮件服务器(发)---> 普通邮件服务器(发/收)
因为客户端服务器发送邮件速度较慢,由空客户端代发,发送速度较快,且更安全
排错查看:/var/log/maillog
#########################################################################
普通邮件服务器(desktop0):
1)提供邮箱存储
2)向外发送邮件
3)对内投递邮件
空客户端邮件服务器(server0):
1)不提供邮箱存储
2)向外发送邮件(伪装成指定的后端邮件服务器)
3)不对内投递邮件
示例:postfix空客户端邮件服务
初始化后端邮件服务器desktop0.example.com,操作如下:lab smtp-nullclient setup
然后将虚拟机server0配置为空客户端邮件服务器,具体要求如下:
此系统不接收外部发送来的邮件,本地发送的任何邮件都会自动路由到 smtp0.example.com 所发出的邮件显示来自于 desktop0.example.com
在 server0 上发送一封标题为 Test1 的邮件给本地用户 student ;实际结果将由 desktop0 上的本地用户 student 接收到此邮件
配置要点:将server0调整为空客户端邮件服务器:指定后端服务器,发件来源,禁止邮件投递功能
步骤一:将server0配置为空客户端邮件服务器
设置永久的主机名(server0.example.com)/etc/hostname
1)安装postfix软件包 # yum -y reinstall postfix
注:新实验时要删除配置文件# rm -rf /etc/postfix/main.cf,再重装postfix
2)修改main.cf配置文件,调整或修改现有配置
# vim /etc/postfix/main.cf
99行myorigin = desktop0.example.com //后端邮件服务器管辖的邮箱域
116行inet_interfaces = loopback-only //仅本机,或=localhost
164行mydestination = //将投递域设为空(不投递)
317行relayhost = [smtp0.example.com] //后端邮件服务器的域名,将邮件交给smtp0
mynetworks = 127.0.0.0/8 [::1]/128 //【添加】信任网络smtp0
3)启动postfix服务 # systemctl restart postfix
4)查看邮件服务监听状态 # netstat -antpu | grep :25
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2054/master
tcp6 0 0 ::1:25 :::* LISTEN 2054/master
步骤二:将desktop0配置为后端邮件服务器
设置永久的主机名(server0.example.com)/etc/hostname
1)执行 lab smtp-nullclient setup //此命令为用于实验用的自定义命令
[root@desktop0 ~]# lab smtp-nullclient setup
Setting up desktop machine...
Setting up dovecot...
Generating new dovecot certificate...
Setting up postfix... Generating new postfix certificates...
Setting up firewall...
Setting up user student...
Installing httpd to share cert...
验证:空客户端发件给student,在desktop上的student接收到邮件
2)确认发信服务(postfix) # netstat -antpu | grep :25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 31366/master
tcp6 0 0 :::25 :::* LISTEN 31366/master
3)确认取信服务(dovecot)# netstat -antpu | grep dovecot
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 31229/dovecot
步骤三:使用mail命令测试空客户端邮件服务器
1)在server0(空客户端邮件服务器)上给本机用户student发信
# echo 'Mail Data.' | mail -s 'Test1' student
# mail -u student //本机用户并不会收到邮件
2)在desktop0(后端邮件服务器)上的同名用户student可以收到信
# mail -u student //收件正常
排错:
1)在空客户端服务器上(server0)
# > /var/log/maillog //清空日志
# mail .....
# cat /var/log/maillog 【less分页查看文件】
.. ..
status=sent
2)在后端邮件服务器上(desktop0)
# cat /var/log/maillog
.. ..
loopback to myself //邮件未成功投递