Linux 邮件服务器 之跟我一步一步来实现一个邮件系统

上一篇介绍了邮件服务器的各组件功能和原理,这次来由浅的入深来一步步实现一个邮件系统。

实验环境:

操作系统 CentOS release 5.11 64位
postfix-2.11.6
courier-authlib-0.64.0
cyrus-sasl-2.1.22-7.el5_8.1
cyrus-sasl-plain-2.1.22-7.el5_8.1
dovecot.x86_64 0:1.0.7-8.el5_9.1

一、安装postfix,建立基本配置

postfix安装过程(略)详细可见上一篇博文

http://tchuairen.blog.51cto.com/3848118/1684872

1、编辑配置文件" /etc/postfix/main.cf " 定义如下内容:

myhostname = mail.qupeiyin.net
myorigin = $mydomain
mydomain = qupeiyin.net
mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain
mynetworks = 127.0.0.0/8,mynetworks

参数说明:

myhostname 主机名,与host那么相同。
myorigin 发件人地址域
mydomain   所在域
mydestination 目标收件地址
mynetworks  可以被中继的客户端网段
alias_map = hash:/etc/aliases 别名查找表

2、安装dovecot实现邮件接收

yum install dovecot -y

编辑配置文件 /etc/dovecot/dovecot.conf

启用协议

protocols = imap pop3

启动dovecot服务

/etc/init.d/dovecot start

启动成功后会监听端口:imap4:143/tcp,pop3:110/tcp 以明文方式工作;

3、postfix + SASL 用户认证

saslauthd -v  显示当前主机saslauthd服务所支持的验证方式

修改验证方式

vim /etc/sysconfig/saslauthd

启动saslauthd服务

/etc/init.d/saslauthd start

设置开机启动

chkconfig saslauthd on

测试验证机制是否可用,出现OK表示正常;

testsaslauthd -u username-p pass

0: OK "Success."

邮箱格式:

mbox:一个文件存储所有邮件

maildir:一个文件存储一封邮件,所有邮件存储在一个目录中;

#home_mailbox = Mailbox  定义邮箱格式

#home_mailbox = Maildir/

#mail_spool_directory = /var/mail   定义maildir格式邮箱文件的保存路径

4、让postfix支持sasl认证功能

编辑配置文件 /etc/postfix/main.cf 添加如下内容:

broken_sasl_auth_clients = yes
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_path = smtpd
smtpd_banner = Welcome to our Server !

参数说明:

broken_sasl_auth_clients  是否要通过SASL验证客户端身份
smtpd_recipient_restrictions  定义收件人限制
smtpd_sasl_auth_enable = yes 启用SASL认证功能
smtpd_sasl_local_domain = $myhostname  基于SASL认证的时候指定本地的域
smtpd_sasl_security_options SASL认证的安全选项,noanonymous表示不支持匿名用户
smtpd_sasl_path = smtpd 指定使用SASL的服务器程序
smtpd_banner  定义登陆时候的欢迎信息

参数说明(二):

permit_mynetworks 允许本地网络
permit_sasl_authenticated 允许SASL验证通过的用户
reject_invalid_hostname 拒绝不合法的主机名的主机来收发邮件
reject_non_fqdn_hostname 拒绝不是fqdn格式主机名的主机
reject_unknown_sender_domain 拒绝无法识别的发件人域
reject_non_fqdn_sender 拒绝没有fqdn的发件人
reject_non_fqdn_recipient 拒绝没有fqdn的收件人
reject_unknown_recipient_domain 拒绝无法识别的收件人域
reject_unauth_pipelining 无法验证的管道
reject_unauth_destination 拒绝无法验证的目标地址

编辑配置文件/usr/lib64/sasl2/smtpd.conf 添加如下内容:

pwcheck_method:saslauthd

mech_list:PLAIN LOGIN

log_level:3

当需要调试的时候,打开log_level可以输出更为详细的信息。

5、实现postfix基于客户端的访问控制

在配置文件"/etc/postfix/main.cf"使用如下参数控制:

smtpd_client_restrictions= 
smtpd_data_restrictions= 
smtpd_helo_restrictions=  
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
smtpd_sender_restrictions=

参数说明:

smtpd_client_restrictions 用于限定符合条件的才允许连接服务器
smtpd_data_restrictions 用于限定符合条件的用户才允许发送data指令
smtpd_helo_restrictions 用于限定符合条件的用户才允许发送helo指令
smtpd_recipient_restrictions 用于限定符合条件的用户才允许发送rcpt to指令
smtpd_sender_restrictions 用于限定符合条件的用户才允许发送mail from指令

内置限制条件:(更多参考postfix手册)

reject_unauth_destination-拒绝未经认证的目标

permit_mynetworks-该网段的主机可以被中继

访问控制文件

/etc/postfix/access

[email protected] reject

microsoft.com ok

规则编写格式:

pattern  action

邮件地址的pattern格式如下:

[email protected] 用于匹配指定邮件地址
domain.tld 用于匹配以此域名作为邮件地址中的域名部分的所有邮件地址
[email protected] 用于匹配以此作为邮件地址中用户名部分的所有邮件地址

主机名称/地址 pattern格式如下:

ip    用于匹配特定的IP地址或网络内的所有主机

network /mask  CIDR格式,匹配指定网络内的所有主机

关于action

ok 接受其pattern匹配的邮件地址或主机名称/地址

拒绝部分:

4NN text

5NN text

其中4NN类表示过一会重试,5NN类表示严重错误。

REJECT optional text  拒绝;text为可选信息

DEFER  optional text  拒绝;text为可选信息

自定义访问表的条件通常使用check_client_access,check_helo_access,check_sender_access,check_recipient_access 进行,他们后面通常跟上type:mapname格式的访问类型和名称。其中,check_sender_access,check_recipient_access 用来检查客户端提供的邮件地址,其访问表中可以使用完整的邮件地址,如[email protected];也可以只使用域名,如果tuchao.com,还可以只有用户名的部分,如[email protected]。

实例演示(一):

拒绝ip:115.204.89.87  windows 客户端发送邮件

1、编辑 /etc/postfix/access 作为客户端检查控制文件,添加如下一行:

115.204.89.87 REJECT

2、将此文件转换为hash格式

postmap  /etc/postfix/access

3、配置postfix使用此文件对客户端进行检查

编辑配置文件 vim /etc/postfix/main.cf 加入一行:

smtpd_client_restrictions = check_client_access hash:/etc/postfix/access

注:这里的hash类型就代表了.db的文件,所以这里不要写后缀。

4、让postfix重新载入配置文件

/etc/init.d/postfix reload

现在使用windows上的客户端发邮件,就会看到被拒绝了;

实例演示(二):

拒绝所在域为 huairen.com 的发件人发送邮件。

1、编辑 /etc/postfix/access 作为客户端检查控制文件,添加如下一行:

huairen.com REJECT

2、将此文件转换为hash格式

postmap  /etc/postfix/access

3、配置postfix使用此文件对客户端进行检查

编辑配置文件 vim /etc/postfix/main.cf 加入一行:

smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/access

4、让postfix重新载入配置文件

/etc/init.d/postfix reload

修改客户端的发件人地址,我这里使用的Outlook。 文件—账户设置—找到自己的邮箱地址—更改;

然后尝试发一封邮件出去

可以明显看到拒绝信息,Sender address rejected:Access denied

实例演示(三):

拒绝所有邮件头部用户名为tuchao的地址发邮件

1、添加一个访问控制文件 /etc/postfix/mailhostdeny 作为客户端检查控制文件,添加如下一行:

[email protected] REJECT

2、将此文件转换为hash格式

postmap  /etc/postfix/mailhostdeny

3、配置postfix使用此文件对客户端进行检查

编辑配置文件 vim /etc/postfix/main.cf 加入一行:

smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/mailhostdeny,permit_mynetworks,reject_unauth_destination

注:在smtpd_recipient_restrictions配置中,必须要有两个内置参数permit_mynetworks,reject_unauth_destination,如果需要加入其他参数,这两个内置参数放到最后。

4、让postfix重新载入配置文件

/etc/init.d/postfix reload

尝试给[email protected]发送邮件

可以看到收件人不符合要求被拒绝了

邮件别名的使用

编辑别名配置文件 /etc/aliases 加入如下两行:

a:    python

tuchao:  [email protected]

newaliases  执行此命令用于生成别名文件的hash格式,便于查找,每次修改过aliases文件都要执行。

说明:a:表示把所有发给本地a用户的邮件,全部转发给本地的python用户,这里a用户不存在也没关系服务器能识别到别名就可以了。  把所有发给本地tuchao用户的邮件。全部转发至[email protected]。

给a用户发送邮件测试

给tuchao用户发邮件

时间: 2024-10-13 17:29:23

Linux 邮件服务器 之跟我一步一步来实现一个邮件系统的相关文章

Linux邮件服务器架构

// 上面的过程只是实现了简单的本地用户的文件发送功能,只需要安装mailutil,不需要安装配置sendmail,看鸟哥的Linux私房菜中写的应该是本地用户发送邮件不需要sendmail.只有当非本地用户使用该MTA发送邮件时才需要使用sendmail.邮件服务器的架构技术很实用,相信以后用途也很大.本博客将持续更新  Linux邮件服务器架构 的学习过程. Linux邮件服务器架构,布布扣,bubuko.com

Linux 邮件服务器原理介绍,编译安装Postfix实现本地的邮件服务。

一.邮件服务器基本的工作原理 用户(MUA)通过SMTP协议将邮件发送到服务器(MTA),服务器分解发现如果是本地的邮件传输则通过lmtp来传送,如果是远程邮件将调用本地的客户端使用SMTP协议向对方服务器传送. 当对方的服务器接收到邮件之后,发现如果不是本机所负责的域,则将邮件交给本机的邮件客户端,根据邮件目标域请求DNS解析,将邮件发送到目标服务器,或者丢至下一跳此过程称为邮件中继,如果发现是本机负责区域内的用户,则SMTPD将邮件转交给MDA,由MDA把邮件传递到用户的邮筒. 用户通过MU

linux邮件服务器的搭建和安全

邮件系统的特点:快捷,安全,多样性 实现方式: Windows: 电子邮件服务 03 08  exchange Linux: sendmail  [无身份验证 无加密 无防范垃圾邮件,病毒] POSTFIX [模块化,快] Qmail MAA:邮件访问代理  tcp 110 (pop3)  tcp 109 (pop2)  tcp 143 (imp4) MUA: 邮件用户代理 MDA: 邮件的传递/分检代理 实现系统:redhat5系列 打开一台redhat机器 [[email protected

教你如何架设linux邮件服务器postfix

检查linux是否有安装postfix和dovecot 检查命令如下: Rpm  -qa |grep  postfix; Rpm –qa |grep dovecot; 如果没有显示任何数据,表明没有安装,需要网上下载软件安装:   修改电脑名: # vi /etc/sysconfig/network 修改HOSTNAME=linuxmail.cn   修改发送服务器配置文件: 1.  # vim /etc/postfix/main.cf 2.  113 inet_interfaces = all

linux 邮件服务器

邮件通信系统协议及概念:软件角色:MUA:邮件客户端MTA:邮件服务端MDA:邮件服务端模块邮件客户端:Mail User Agent,邮件用户代理邮件服务端:Mail Transfer Agent,邮件传输代理邮件服务端的模块/功能:Mail Delivery Agent,邮件分发代理 发送,投递邮件--Postfix收取邮件--Dovecot 通信协议及过程:邮件传递双方的通信规则SMTP:简单邮件传输协议(TCP25)POP3:离线取信协议,第三版邮件协议(TCP110)IMAP4:在线管

linux 将一个服务器上的文件或文件夹拷贝到另一个服务器上(转载)

复制文件或目录命令:  复制文件:  (1)将本地文件拷贝到远程  scp 文件名用户名@计算机IP或者计算机名称:远程路径 本地192.168.1.8客户端  scp /root/install.* [email protected]:/usr/local/src (2)从远程将文件拷回本地  scp 用户名@计算机IP或者计算机名称:文件名本地路径 本地192.168.1.8客户端取远程服务器12.11上的文件  scp [email protected]:/usr/local/src/*.

【我的Linux,我做主!】动手搭建Postfix邮件服务器

目录:(一)了解邮件的整个收发流程(二)配置postfix邮件服务器(三)使用图形客户端收发邮件 (一)了解邮件的整个收发流程 (1.1)电子邮件在我们的日常生活中,属于经常用到的一种信息传输服务.我们使用的可能是自己公司的邮件服务器,也可能使用的是互联网中提供的知名邮件服务器,例如QQ邮箱.163邮箱.126邮箱等,它们收发邮件的流程都是一样的.假设现在有一个126邮件服务器,在邮件服务器上有两个帐户,分别是[email protected]和[email protected],此时如果tom

烂泥:Postfix邮件服务器搭建之准备工作

说实话,Postfix邮件服务器的搭建是一件很麻烦的事情,需要各种软件之间的配置和调试.在写这篇文章之前,我也是搭建测试了不下于10次才算把整个流程给走通,今天刚好有时间把整个搭建过程记录下来. 在正式安装postfix之前,我们先来介绍在搭建之前所需要做的准备工作. 一.域名解析 因为邮件服务器牵涉到域名的问题比较多,所以在此我们先来介绍有关域名解析的相关配置. 我们需要在域名解析控制台添加MX.TXT和相关的A记录,在平时的域名解析过程中,使用最多的是DNSPod以及万网,下面分别一一介绍下

邮件服务器系统

邮件服务器 邮件服务器是一种用来负责电子邮件收发管理的设备.它比网络上的免费邮箱更安全和高效,因此一直是企业公司的必备设备. 电子邮件是因特网上最为流行的应用之一.如同邮递员分发投递传统邮件一样,电子邮件也是异步的,也就是说人们是在方便的时候发送和阅读邮件的,无须预先与别人协同.与传统邮件不同的是,电子邮件既迅速,又易于分发,而且成本低廉.另外,现代的电子邮件消息可以包含超链接.HTML格式文本.图像.声音甚至视频数据.我们将在本文中查看处于因特网电子邮件核心地位的应用层协议. 案例: 建设两台