布Sendmail之网,安全则不漏(上)
Sendmail是一种古老的邮件服务器,但是它仍然存在着种种问题,最大的问题就是安全问题。由于Sendmail邮件服务器占据了很大的市场份额,因此,提高Sendmail的安全性就显得格外重要了。
本篇拟从证书、Starttls、Sasl技术来探讨Sendmail的安全问题。首先对相关术语的解释如下,(只有术语解释来自于互联网,请尊重版权)。
STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接(TLS或SSL),而不是使用一个单独的加密通信端口。RFC 2595定义了IMAP和POP3的STARTTLS,RFC 3207定义了SMTP的STARTTLS,RFC 4642定义了NNTP的STARTTLS。TLS 是独立于应用层的协议。高层协议可以透明地分布在 TLS 协议上面。然而,TLS 标准并没有规定应用程序如何在 TLS 上增加安全性;它把如何启动 TLS 握手协议以及如何解释交换的认证证书的决定权留给协议的设计者和实施者来判断。
Sasl全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。SASL提供了一个通用的方法为基于连接的协议增加验证支持,而XMPP使用了一个普通的XML名字空间来满足SASL的需要。
接下来,笔者将使用有图有真相的实验,和您共同探讨Sendmail 安全方面在企业中的应用实例。(很抱歉,由于篇幅的限制,本篇不得不分为上下两篇,给您带来的不便,敬请谅解。谢谢)
实验环境:某企业拟计划使用Sendmail来搭建邮件服务器。为了尽最大努力的保护邮件服务系统的安全,要求使用证书、Sasl等技术。
实验拓扑:
实验设备:
DNS && MAIL Server LInux5.4(2.6.18-164.el5)
实验步骤:
一、配置Sendmail
1.安装Sendmail相关组件
[root@ns ~]# yum list |grep -E "Sendmail"
This system is not registered with RHN.
RHN support will be disabled.
Sendmail.i386 8.13.8-2.el5 installed
Sendmail-cf.i386 8.13.8-2.el5 rhel-Server
Sendmail-devel.i386 8.13.8-2.el5 rhel-Server
Sendmail-doc.i386 8.13.8-2.el5 rhel-Server
[root@ns ~]# yum install -y Sendmail-cf.i386
[root@ns ~]# rpm -qa |grep -E "Sendmail|m4"
m4-1.4.5-3.el5.1
Sendmail-cf-8.13.8-2.el5
Sendmail-8.13.8-2.el5
2.修改Sendmail相关配置文件
[root@ns ~]#
[root@ns mail]# pwd
/etc/mail
[root@ns mail]# vim Sendmail.mc
[root@ns mail]# vim access
[root@ns mail]# vim local-host-names
[root@ns mail]# service Sendmail start
Starting Sendmail:
[root@ns mail]# service Sendmail restart
Shutting down sm-client: [ OK ]
Shutting down Sendmail: [ OK ]
Starting Sendmail: [ OK ]
Starting sm-client: [ OK ]
[root@ns mail]#
3.测试
添加用户
[root@ns ~]# useradd user1
[root@ns ~]# echo "123"|passwd --stdin user1
Changing password for user user1.
passwd: all authentication tokens updated successfully.
[root@ns mail]# telnet 127.0.0.1 25
二、配置DNS
1.安装Sendmail相关组件
[root@ns Server]# pwd
/mnt/cdrom/Server
[root@ns Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm
[root@ns Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm
[root@ns Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm
2.修改Sendmail相关配置文件
[root@ns etc]# pwd
/var/named/chroot/etc
[root@ns etc]# cp -p named.caching-nameserver.conf named.conf
[root@ns etc]# vim named.conf
[root@ns etc]# pwd
/var/named/chroot/etc
[root@ns etc]# vim named.rfc1912.zones
[root@ns etc]# cd /var/named/chroot/var/named/
[root@ns named]# cp localhost.zone bj.com.db
[root@ns named]# vim bj.com.db
[root@ns named]# pwd
/var/named/chroot/var/named
[root@ns named]# cp -p named.local 192.168.10.db
[root@ns named]# vim 192.168.10.db
3.重启服务
[root@ns named]# rndc reload
server reload successful
[root@ns named]# service named start
Starting named: [ OK ]
[root@ns named]#
[root@ns named]# chkconfig named on
[root@ns named]# chkconfig --list |grep named
named 0:off 1:off 2:on 3:on 4:on 5:on 6:off
三、修改主机信息
1.修改nameserver
[root@ns named]# vim /etc/resolv.conf
2.修改hostname
[root@ns named]# hostname
ns.bj.com
[root@ns named]# vim /etc/sysconfig/network
3.修改hosts文件
[root@ns named]# vim /etc/hosts
4.重启
[root@ns named]# init 6
四、配置dovecot
1.安装dovecot相关组件
[root@mail ~]# yum list all |grep dov
This system is not registered with RHN.
RHN support will be disabled.
dovecot.i386 1.0.7-7.el5 rhel-Server
[root@mail ~]# yum install dovecot.i386 -y
2.修改dovecot相关配置文件
[root@mail ~]# service dovecot start
Starting Dovecot Imap: [ OK ]
[root@mail ~]# chkconfig dovecot on
[root@mail ~]# chkconfig --list |grep dovecot
dovecot 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@mail ~]# netstat -tupln |grep dovecot
tcp 0 0 :::993 :::* LISTEN 3179/dovecot
tcp 0 0 :::995 :::* LISTEN 3179/dovecot
tcp 0 0 :::110 :::* LISTEN 3179/dovecot
tcp 0 0 :::143 :::* LISTEN 3179/dovecot
[root@mail ~]#
[root@mail ~]# grep 993 /etc/services
imaps 993/tcp # IMAP over SSL
imaps 993/udp # IMAP over SSL
[root@mail ~]# grep 995 /etc/services
pop3s 995/tcp # POP-3 over SSL
pop3s 995/udp # POP-3 over SSL
[root@mail ~]# service dovecot restart
Stopping Dovecot Imap: [ OK ]
Starting Dovecot Imap: [ OK ]
[root@mail ~]# netstat -tupln |grep dovecot
tcp 0 0 :::110 :::* LISTEN 3294/dovecot
tcp 0 0 :::143 :::* LISTEN 3294/dovecot
[root@mail ~]# vim /etc/dovecot.conf
(很抱歉,由于篇幅的限制,本篇不得不分为上下两篇,给您带来的不便,敬请谅解。未完,参考《布Sendmail之网,安全则不漏(下)》)
转载于:https://blog.51cto.com/pheonix/816265
相关文章:

英伟达发布新型GAN,豹子秒变沙皮狗!| 技术头条
作者 | 刘静编译 | 李尔客转自自图灵TOPIA(ID:turingtopia)5月9日,英伟达首席研究科学家刘明宇在社交网站公布了其最新研究成果:一种新型的GAN,在测试期间只需几张示例图像,就可以将图像转换为以前从未见过…

【Live555】live555源码详解(九):ServerMediaSession、ServerMediaSubsession、live555MediaServer
【Live555】live555源码详解系列笔记 继承协作关系图 下面红色表示本博客将要介绍的三个类所在的位置: ServerMediaSession、ServerMediaSubsession、DynamicRTSPServer DynamicRTSPServer是live555MediaServer中实现的类,用来创建RTSP服务器 17、ServerMediaSession Se…

windows下mysql和linux下mysql主从配置
1. linux下mysql安装版本5.6 windows下mysql版本5.7 不要问我为什么版本不一致 就是想这么搞 2. linux为主服务器 windows为从服务器 3.找到liunx下mysql配置文件 添加如下 然后重新启动 4.添加复制用户 5.查看master状态,记录下两个参数 mysql> show mas…

myeclipse快捷键大全
1.转变大写:ctrlshiftx; 2.转变小写:ctrlshifty; 3.关闭当前窗口:ctrlw; 4.关闭所有的窗口:ctrlshiftw; 5.帮助提示:这个可以选择自己喜欢的键位组合:我比较喜欢ctrlenter; 6.复制当前行:ctrlal…

算力觉醒后,智慧距离勃发就只差一个想法
“太阳把自己的能量以光的形式洒向地面,让植物得以利用光合作用生长成熟;繁茂的草木不仅为动物们提供了栖息的家园,更将太阳的馈赠化为甜蜜的果实,在滋养万灵的同时把自己对未来的希望变成种子,播撒到远方……形成下一…

【Ubuntu】将Ubuntu的源改为国内源
1、备份源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2、查询系统代号 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.1 LTS Release: 20.04 Codename: focal我在Ubuntu20.4上做的测试,Ubun…
浏览器缓存和webpack缓存配置
网络请求会耗费大量时间和请求,如果可以重用为改变的网络资源,对于用户来说可以更快更流畅的查看网页,对于服务器来说减少了很多负荷,所以浏览器缓存是前端优化的重要内容。本文介绍了浏览器缓存的机制和缓存在webpack中的应用。 …

ipsec ***野蛮模式应用
IPSEC野蛮模式:简介:IKE 的协商模式 在RFC2409(The Internet Key Exchange )中规定,IKE 第一阶段的协商可以采用两种模式:主模式(Main Mode )和野蛮模式(Aggressive Mode…

漫画:什么是LRU算法?
本期封面作者:A17————— 两个月前 —————用户信息当然是存在数据库里。但是由于我们对用户系统的性能要求比较高,显然不能每一次请求都去查询数据库。所以,小灰在内存中创建了一个哈希表作为缓存,每次查找一个用户的时候…

第15章节-Python3.5-Django实现用户登录与前端交互2 14
目的我想登陆成功后显示我的后台管理(实现过程): 新建home.html 在templates目录下代码如下: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body style"…

【GLib】GLib学习笔记(一):GLib、GObject、GType
1、GLib GLib是 Gtk 库和 Gnome 的基础。glib 可以在多个平台下使用,比如 Linux、Unix、Windows 等。GLib为许多标准的、常用的 C 语言结构提供了相应的替代物。 GLib是GTK的基础库,它由基础类型、对核心应用的支持、实用功能、数据类型和对象系统五个…

tomcat配置tomcat-redis-session-manager
为什么80%的码农都做不了架构师?>>> 今天写了半天程序,有点乏了。想想来配置一下tomcat-redis-session-manager吧,但是按照 官方文档配了总是tomcat启动错误。 java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/Ge…

链式比较、奇怪的字母、有趣的import...Python冷知识(六)
本文转载自Python编程时光(ID:Python-Time)冷知识系列,已经更新至第六篇。谈谈 Python 那些不为人知的冷知识(一)谈谈 Python 那些不为人知的冷知识(二)谈谈 Python 那些不为人知的冷知识&#…

【GLib】GLib学习笔记(二):源码编译
一、源码下载 http://ftp.acc.umu.se/pub/GNOME/sources/glib/本人下载是最新版本(截至2020-08-26):glib-2.65.2.tar.xz 二、安装依赖 1、安装依赖库 sudo apt install cmake sudo apt install zlib1g-dev sudo apt install meson sudo apt install ninja sudo …

java之类和对象
概述 面向过程:面向过程主要是把问题分解成多个不同的步骤,然后把各个步骤变成方法,它更强调过程。代表语言:c 面向对象:面向对象会把问题分解成各个对象,然后各个对象之间进行交互,每个对象内部…

【GLib】GLib学习笔记(三):gtypes、garray、gerror、goption
1、类型:glib/gtypes.h 1.1 基本类型; typedef char gchar; typedef short gshort; typedef long glong; typedef int gint; typedef gint gboolean;typedef unsigned char guchar; typedef unsigned short gushort; typedef unsigned lo…

Bert时代的创新:Bert应用模式比较及其它 | 技术头条
作者:张俊林,中国中文信息学会理事,中科院软件所博士。目前在新浪微博 AI Lab 担任资深算法专家。在此之前,张俊林曾经在阿里巴巴任资深技术专家并负责新技术团队,以及在百度和用友担任技术经理及技术总监等职务。他是…

HashSet 详解
为什么80%的码农都做不了架构师?>>> package com.sun;/* |——SortedSet接口——TreeSet实现类 Set接口——|——HashSet实现类|——LinkedHashSet实现类 HashSet 此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例&#…

肖仰华:知识图谱落地,不止于“实现”
作者 | Just出品 | AI科技大本营(ID:rgznai100)“知识将比数据更重要,得知识者得天下”,去年十月,在 CSDN 对肖仰华教授的一篇约稿里,他指出数据的真正价值蕴含于其深加工的知识中。从 Google 于 2012 年提…

【摄像头】摄像头相关名词解释
1、白平衡 白平衡,字面上的理解是白色的平衡。白平衡是描述显示器中红、绿、蓝三基色混合生成后白色精确度的一项指标。 那什么是白色?这就涉及到一些色彩学的知识,白色是指反射到人眼中的光线由于蓝、绿、红三种色光比例相同且具有一定的亮度所形成的视觉反应。我们都知道…

金额跳动动画效果
前言 金额效果,因为觉得公司目前的金额太乏味,决定加点效果,也特此写了个小demo,代码非常简单,贴代码方便大家看看 通过 runtime 建立属性(setter/getter方法) /** 由于分类中要添加属性,所以通过runtime方…

POJ 3070 Fibonacci
裸奔的矩阵乘法,当模板了。 #include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N 2;const int MOD 10000;struct Mat {long long mat[N][N];void init() {for(int i 0; i < N; i) {for(int j 0; j &l…

推荐一个小而美的Python代码格式化工具
代码可读性是评判代码质量的标准之一,有一个衡量代码质量的标准是 Martin 提出的 “WFT” 定律,即每分钟爆出 “WTF” 的次数。你在读别人代码或者做 Code Review 的时候有没有 “WTF” 冲动呢? 为了帮助开发者统一代码风格,Pytho…

【摄像头】摄像机工作原理
1、摄像机工作原理 外部光线穿过镜头(lens)后, 经过滤光片(color filter)滤波后照射到光学传感器(Sensor)上面, Sensor 将从 lens 上传导过来的光线转换为电信号,再通过内部的 AD 转换为数字信号。 如果 Sensor 没有集成 DSP,则通…

@程序员,别再自己闷头学了
60 年冬去春来,人工智能技术发展起起落落。现在是 2019 年,属于 AI 不可阻挡的新转机正强势袭来。 科技巨头一向是未来技术发展最重要的风向标。2011 年,随着 Google 将一线业务引入深度学习技术,落伍移动时代的微软也拉起了一支…

linux下的oracle10g rman备份
RMAN是Oracle提供的一个数据库备份和恢复工具,利用rman可以比较方便的对数据库进行备份。Oracle 数据库可运行在归档和非归档模式下,这两者的区别就在于对redo log的处理。归档模式下,当一个redo log 写满之后,就会把这个redo lo…

最全Python算法实现资源汇总!
整理 | Rachel责编 | Jane出品 | Python大本营(ID:pythonnews)【导语】数据结构与算法是所有人都要学习的基础课程,自己写算法的过程可以帮助我们更好地理解算法思路,不要轻视每一个算法,一些虽然看似容易&…

【摄像头】低照度和光圈
1、低照度 低照度摄像机是指在较低光照度的条件下仍然可以摄取清晰图像的摄像头。 照度,即光照强度,是一种物理术语,指单位面积上所接受可见光的能量。单位:勒克斯Lux,简作Lx。 照度和光圈大小的关系:镜头的光圈越大(F值越小),所需的照度越低。这个好理解,光圈大了进…

CART树 python小样例
决策树不断将数据切分成小数据集,直到所有目标变量完全相同,或者数据不能再切分为止,决策时是一种贪心算法,它要在给定的时间内做出最佳选择,但并不关心能否达到最优 树回归 优点:可以对复杂和非线性的数据…

Directx教程(24) 简单的光照模型(3)
在工程myTutorialD3D11_17中,我们重新定义我们的cube顶点法向,每个三角形面的顶点法向都是和这个三角形的面法向是一致的。如下图所示: 在该工程中,我们还修改了CubeModelClass文件,从一个cube.txt文件中读cube顶点位置…