热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

sendmail邮件服务器配置详解

电子邮件服务电子邮件服务基于客户/服务器模式,对于一个完整的电子邮件系统而言,它由三部分构件组成1.用户代理(UserAgent)用户与电子邮件系统的接口,负责发送邮件到邮件服务器,和从邮件服务器上接受邮件MUA(MailUserAgent)邮件用户代理,用于收
电子邮件服务
电子邮件服务基于客户/服务器模式,对于一个完整的电子邮件系统而言,它由三部分构件组成

1.用户代理 (User Agent) 用户与电子邮件系统的接口,负责发送邮件到邮件服务器,和从邮件服务器上接受邮件
MUA(Mail User Agent)邮件用户代理 ,用于收发mail的程序,前主流的是Outlook,Foxmail Evolution Thunderbird

2.邮件服务器 邮件服务器是电子邮件系统的核心构件
MTA(Mail Transfer Agent)邮件传送代理,将MUA的信件转发给指定的用户,最主流的MTA 有Sendmail,Postmail Qmail,等
MDA(Mail Delivery Agent)邮件投递代理,用来投递邮件 主流MDA有 Pocmail, Maildrop等
MRA(Mail Retrieval Agent)邮件访问代理 常用的MRA 有imap cryus-imap ,dovecot等
SASL 简单认证安全层,提供一种做认证的功能


3.电子邮件使用的协议
SMTP 简单邮件传输协议
是一组用于由源地址到目的地址传送邮件的规则,由它来控制邮件的中转方式,属于TCP/IP协议,帮助每台计算机在发送或中转邮件时找到下一个目的地

POP3 邮件接收协议
它规定怎样将个人计算机连接到Internet 的邮件服务器和下载电子邮件的协议,是Internet电子邮件的第一个离线协议标准,pop3允许从服务器上把电子邮件存储到本地主机,同时删除保存在邮件服务器上的邮件。
了解邮件服务的工作原理后,我们来介绍邮件服务器的配置

sendmail 服务器
sendmail 的安装包有三个 sendmail , sendmail -cf (转换各个配置文件到所需要的格式),sendmail Cdoc
默认监听端口为 25 ,主程序:/usr/sbin/sendmail , 进程名为 sendmail, 服务脚本:/etc/init.d/sendmail ,配置目录:/etc/mail 主配置文件是: /etc/mail/sendmail.mc 定义别名:/etc/aliases 定义访问控制:/etc/mail/access 定义自己管理的域:/etc/mail/local-host-names/
smtp:25 ,smtps:465,pop3:110 ,pops:995,imap:143,imaps:993


查看主配置目录会发现,在目录下有许多与配置文件相同的后缀名为.db的文件,这是因为sendmail读取的是二进制文件,我们只需要安装sendmail Ccf 包,在配置好服务后,重启sendmail服务,它就会将配置好的服务自动生成到.db文件中。与sendmail.mc 相对应的二进制文件是sendmail.cf
(做sendmail实验需要dns正反向解析的支持,请先配好dns,mx记录,mail A记录,主机名与域名)

下面先开启一个sendmail 服务器
安装sendmail的三个包后,就可以编辑配置文件了
1。vim +116 /etc/mail/sendmail 指定协议,监听端口


2. vim /etc/mail/access 允许给0网段做转发


3. vim /etc/mail/local-host-name 添入自己负责域


现在一个基本的sendmail服务已经配置好 开启服务,建立两个用户发送邮件,测试一下吧
发送邮件


接收邮件



一。现在深入定义别名,在/etc/aliases 下格式
body1: body2
body1 这个用户名可能就是不存在的,但是凡是发给body1的都会转到body2的邮箱里
为redhat定义别名wendy,将发送给redhat的邮件都转发给windy,将发送给anyone这个用户(虚拟组)的邮件转发给wendy,redhat,root,
1 vim /etc/aliases


分别给redhat anyone 发送邮件,测试会发现redhat没有收到邮件,wendy都到两份,那是发给redhat的都被转发给wendy
虚拟用户别名 /etc/mail/virtusertable 顾名思义前面的域或用户都是虚拟的,与 aliase相似,对域的定义能力更强
@123.com root #发送给这个域的都发送给root
admin@xxyz.com jdj #将发送admin的信件都发送给jdj
pagem@he.net lmiwtc@pg.com
@cba.com cba@acl.com #将发送到cba.com域的所有邮件都转发到cba@acl.com
@doml.org %1@dom2.org #发送到第一个域每个用户的文件都转发都后面域的同一个用户

二。sendmail的访问控制
1.开启sendmail.mc 的一项 (sendmail默认为开启)
FEATURE(`blacklist_recipients')dnl
2.在/etc/mail/access 编辑控制策略
Connect:204.168.23 REJECT 明确拒绝
Connect:abc.net DISCARD 悄悄丢弃
Connet:10.3 OK 即使有协议拒绝,它也OK
To:nobody@ ERROR:550 error informations 错误给予错误信息
From:domain.com RELAY 给予转发
To:user@dom9.com SKIP 跳过
看看例子


不允许wendy@st.com 发邮件明确拒绝





三. 做地址伪装, 修改发送前的地址域名
1 编辑 /etc/mail/sendmail.mc 开启下列各项
MASQUERADE_AS(`mydomain.com')dnl 是否对信息作伪装
修改 MASQUERADE_AS(`text.com')dnl 伪装成text.com域名
FEATURE(masquerade_envelope)dnl 是否对整个域(包括子域)做伪装
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl 对localhost域做伪装
MASQUERADE_DOMAIN(localhost.localdomain)dnl
将locahost.com域伪装成text.com

四 。为sendmail做认证
用户发信必须提供账号和密码,不能冒名发信
1 主配置文档 /etc/mail/sendmail.mc
开启下列两项


2强行要求用户必须通过认证发信


3 开启sasl服务


可以先测试一下看sendmail是否支持认证
执行命令确保出现标记文字




现在尝试发送邮件已经不在被yunxu
现在为natasha用户的用户名和密码做base64码




#拷贝Cg==前的字母



推荐阅读
  • 阿里云服务器搭建详解——Ubuntu
    由于自己电脑配置跟不上,双系统一开,整个电脑就会变得非常卡顿,所以决定在阿里云买一个云服务器。听朋友说,学生买的话是非常便宜 ... [详细]
  • vsftpd配置(虚拟用户、匿名用户登录)
    一、ftp服务搭建(一)概述1.ftp连接及传输模式(1)控制连接TCP21,用于发送FTP命令信息 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 了解多域名SAN SSL证书及其工作原理
    本文介绍了多域名SAN SSL证书的概念及其工作方式,探讨其在现代网络安全中的重要性和应用。 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文探讨了在MySQL数据库中处理大规模数据删除的最佳实践,包括分批删除、利用索引、管理事务以及选择合适的删除命令等策略,旨在提升删除效率并确保系统稳定。 ... [详细]
  • 本文介绍了如何利用X_CORBA实现远程对象调用,并通过多个示例程序展示了其功能与应用,包括基础的Hello World示例、文件传输工具以及一个完整的聊天系统。 ... [详细]
  • 解决 Word 远程调用异常:HRESULT:0x800706BE
    最近遇到一个关于 Word 的远程调用问题,表现为‘远程过程调用失败 (异常来自 HRESULT:0x800706BE)’。本文将探讨其原因及解决方案。 ... [详细]
  • Linux系统快捷键大全及使用技巧
    本文详细介绍了Linux系统中的各种快捷键,包括命令行和VIM编辑器中的常用快捷键,帮助用户提高操作效率。同时,文章还提供了关于字体配置、软件安装等方面的实用信息。 ... [详细]
  • Centos7 Tomcat9 安装笔记
    centos7,tom ... [详细]
author-avatar
苦蔷薇1988
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有