linux 邮件服务器

摘要:
结尾处的/表示此邮箱是目录精简配置文件[root@svr6postfix]#cpmain.cfmain。巴克[root@svr6postfix]#Mva。txt主文件。cfmv:是否要覆盖“main.cf”?

邮件通信系统协议及概念:
软件角色:
MUA:邮件客户端
MTA:邮件服务端
MDA:邮件服务端模块
邮件客户端:Mail User Agent,邮件用户代理
邮件服务端:Mail Transfer Agent,邮件传输代理
邮件服务端的模块/功能:Mail Delivery Agent,邮件分发代理

发送,投递邮件——Postfix
收取邮件——Dovecot

通信协议及过程:
邮件传递双方的通信规则
SMTP:简单邮件传输协议(TCP25)
POP3:离线取信协议,第三版邮件协议(TCP110)
IMAP4:在线管理信件协议,第四版网际消息访问协议(TCP143)
发件人—SMTP—》MTA—SMTP—》MTA—POP3/IMAP—MUA

常见的邮件服务器软件
Ppostfix
兼容Sendmail,采用模块化设计
在投递效率,稳定性,性能及安全方面均表现出色
Exchange
微软公司产品,方便与windows系列产品集成,协作性好
其他开源MTA软件
Qmail Sendmail

邮件客户端软件
命令行工具
telnet 邮件服务器 端口
mail mutt
图形收发信软件工具
microsoft outlook
Tencent foxmail
mozilla thunderbird(雷鸟)

————————————————————————————————

邮件系统构成
发信服务+收信服务+客户端工具

案例:
邮件服务器:mail.Anonymous.cn 192.168.4.6
邮件域:@Anonymous.cn
邮件账号:服务器的本地系统用户
主要软件
发信服务:postfix
收信服务:dovecot
MX(Mail exXchange 邮件交换记录)
[root@svr6 ~]# useradd x(创建两用户)
[root@svr6 ~]# useradd xx

[root@svr6 named]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "Anonymous.cn" {
type master;
file "Anonymous.cn.zone";
};

[root@svr6 named]# vim Anonymous.cn.zone
@ MX 10 mail.Anonymous.cn.(@ MX 优先级 邮件服务器的fqdn)
mail A 192.168.4.6(邮件服务器地址)
[root@pc05]# service named restart

发信服务:Postfix:
在redhat6,postfix已经默认安装,但是监听地址是127.0.0.1:25
相关目录及配置文件
配置文件,存放在/etc/postfix/下
服务配置:/etc/postfix/main.cf
主程序配置:/etc/postfix/master.cf
管理程序,存放在/usr/sbin/下
postalias,postmap,postconf,postfix,postqueue,postsuper

邮件通信日志(排错依据):
/var/log/maillog
邮件队列目录,/var/spool/postfix子目录
incoming,active,deferred,hold,corrupt


postconf:查看当前有效配置(所有可设置的项)
postconf -d:查看所有默认配置(所有可设置的项)
postconf -n:只列出修改过的配置(非默认)
postconf -e 'inet_interfaces = all'(直接改选项)
[root@svr6 postfix]# postconf

服务接口及域设置:
基本配置参数
inet_interfaces:监听服务的接口地址
myhostname:服务器主机名
mydomain:主邮件域
myorigin:外发邮件时的发邮件域地址
mydestination:能够本地投递的收件域

邮箱类型及位置:
邮箱类型
mbox:每个用户一个邮箱文件,存放所有的邮件消息,当邮件内容较多时效率较低
——》传统邮箱:/var/spool/mail/用户名
maildir:每个用户一个邮箱目录,每封邮件对应一个单独的文件,存取速度和效率更好,管理邮件内容更加方便
home_mailbox:邮箱位置及类型
[root@svr6 postfix]# vim main.cf
home_mailbox = Maildir(采用Maildir邮箱类型)
Ps:其中maildir表示邮箱名称,放在用户宿主目录下,当收到第一封邮件后会自动创建。
末尾的 / 表示此邮箱是一个目录(非mailbox方式)

精简配置文件
[root@svr6 postfix]# cp main.cf main.bak(安全起见,备份默认的配置文件)
[root@svr6 postfix]# mv a.txt main.cf (覆盖原有的配置文件)
mv:是否覆盖"main.cf"? y(y)
[root@svr6 postfix]# vim main.cf (修改main.cf)
inet_interfaces = all(开启)
mydomain = Anonymous.cn(主邮件域)
myhostname = mail.$mydomain($mydomain变量,相当于mail.Anonymous.cn)
myorigin = $mydomain
mydestination = $mydomain,$myhostname, localhost.$mydomain, localhost(加上$mydomain变量)
home_mailbox = Maildir/
[root@svr6 ~]# service postfix restart(配置好后,重启服务)

MUA客户端软件
mail命令:不需要任何配置,直接在本机作为邮件服务器
只要做必要的配置,可以以其他主机作为邮件服务器
mail用法:
发信:mail -s '标题' -r 发件人地址 收件人地址
echo '文件'| mial -s '标题' -r 发件人地址 收件人地址
mial -s '标题' -r 发件人地址 收件人地址 < 文件目录/文件

[root@svr6 ~]# mail -s 'hydra' -r xx@Anonymous x@Anonymous.cn(实例)
hail hydra!!(写完后ctrl+d发送)

[root@svr6 ~]# echo 'hail hydra'|mail -s 'hydra' -r xx@Anonymous.cn x@Anonymous.cn(管道方式发送)

[root@svr6 ~]# mail -s 'hydra' -r xx@Anonymous.cn x@Anonymous.cn < /etc/passwd(邮件内容较多时,可以先把邮件写好封装在文件中,用<重定向输入)

收信:
[root@svr6 ~]# ls ~x/(进入x的家目录)
Maildir
[root@svr6 ~]# ls ~x/Maildir/(新邮件放在new下)
cur/ new/ tmp/
[root@svr6 ~]# ls ~x/Maildir/new/
1499966759.Vfd00I100928M340082.svr6.tedu.cn
1499967055.Vfd00I10092bM763659.svr6.tedu.cn
1499967565.Vfd00I10092cM389136.svr6.tedu.cn
[root@svr6 ~]# cat ~x/Maildir/new/1499966759.Vfd00I100928M340082.svr6.tedu.cn(查看邮件内容)
Return-Path: <root@Anonymous.cn>
X-Original-To: x@Anonymous.cn
Delivered-To: x@Anonymous.cn
Received: by mail.Anonymous.cn (Postfix, from userid 0)
id 16DF618061E; Fri, 14 Jul 2017 01:25:58 +0800 (CST)
Date: Fri, 14 Jul 2017 01:25:58 +0800
To: x@Anonymous.cn
Subject: hydra
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20170713172559.16DF618061E@mail.Anonymous.cn>
From: root@Anonymous.cn (root)

————————————————————————————————————
C/S架构
从邮件服务器本机来发信,收信
svr6上的mail——》svr6上的postfi
svr6上的mail——》svr6上的邮箱目录
从客户机来收信,发信(使用刚搭建的邮件服务器)
pc05上的mail——》svr6上的postfi
pc05上的mail——》svr6上的dovecot(邮箱目录)

构建dovecot收信服务:
安装dovecot软件包,默认支持POP3,IMAP这两种收信协议,
根据需要,可将其设为开机自启
[root@svr6 ~]# yum -y install dovecot
[root@svr6 ~]# vim /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no(允许明文通信)
[root@svr6 ~]# vim /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir(用户邮件存放目录)

SMTP认证的工作方式:
Simple Authentication and Security Layer
cyrus-sas-plain 软件包(默认安装)
[root@svr6 ~]# rpm -qa | grep cyrus
cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64
cyrus-sasl-2.1.23-15.el6_6.2.x86_64
cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64

SMTP认证的实现:
启动saslauthd服务
[root@svr6 ~]# service saslauthd restart
[root@svr6 ~]# chkconfig saslauthd on

调整postfix配置,添加认证控制参数
[root@svr6 ~]# vim /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes(启用SASL认证)
mynetworks = 127.0.0.1(设置信任网络)
smtpd_sasl_security_options = noanonymous(阻止匿名发信)
smtpd_recipient_restrictions = (设置收件人过滤)
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination (拒绝向未授权的目标发信)


配置mail客户端:
命令行
在客户机上为mail命令建立配置文件,
/etc/mail.rc或者~/.mailrc
[root@pc05 ~]# vim ~./mailrc
set smtp=smtp://mail.Anonymous.cn(发信服务器)
set from=x@Anonymous.cn(发件人地址)
set smtp-auth-user=x@Anonymous.cn(指定认证用户)
set smtp-auth-password="Taren1"(指定认证密码)
set folder=imap://Anonymous.cn(收信服务器地址)
set password-x@Anonymous.cn="Taren1"(收信密码)

邮件图形界面thunderbird(雷鸟)

——————————————————————————————————

免责声明:文章转载自《linux 邮件服务器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇有关TensorBoard一些小Tip和实例三大数据库中的主键自增对比下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CentOS6.5下设置静态IP

最近使用VM学习Linux时,使用的是带有桌面的那种,每次在重启Linux后需要手动联网,由于是在XShell上操作Linux,每次再进入VM操作Linux联网会十分麻烦,于是想到了一个办法--设置静态IP 编辑网卡文件 /etc/sysconfig/network-scripts/ifcfg-eth0 网卡文件设置之前 网卡文件设置之后 然后重启网卡 s...

[zz]Linux中的/etc/profile文件

【一、让/etc/profile文件修改后立即生效】 方法1:让/etc/profile文件修改后立即生效 ,可以使用如下命令:# .  /etc/profile注意: . 和 /etc/profile 有空格方法2:让/etc/profile文件修改后立即生效 ,可以使用如下命令:# source /etc/profile附:Linux中source命令...

浏览器工作原理和实践(三)——页面

《浏览器工作原理与实践》是极客时间上的一个浏览器学习系列,在学习之后特在此做记录和总结。 一、事件循环 消息队列是一种数据结构,可以存放要执行的任务。它符合队列“先进先出”的特点,也就是说要添加任务的话,添加到队列的尾部;要取出任务的话,从队列头部去取。 从上图可以看出,改造可以分为下面三个步骤: (1)添加一个消息队列; (2)IO 线程中产生的新任务...

浅谈 Linux 下常用 Socket 选项设置

1.Socket和TCP/IP的关系 "All problems in computer science can be solved by another level of indirection." 为满足应用层需求,系统对TCP/IP层进行细节屏蔽和抽象,Socket层就相当于TCP/IP和应用层之间的中间层。 常用的socket/bind/accep...

ZooKeeper学习及其C++ client

目录 概念 ZAB协议(ZooKeeper Atomic Broadcast)简介 ZooKeeper使用场景 服务发现 分布式锁 分布式leader选举 ZooKeeper client API (原生API) ZooKeeper client API (高级API) cpp zookeeper client项目 参考 概念 ZooKeep...

window.open()不同源页面通信

父页面 运行端口:8080 <template> <div> <el-button @click="open()">发送消息给子页面</el-button> </div> </template> <script> export default{ na...