Linux实用教程第20.ppt
第20章 Sendmail服务器配置Linux实用教程第三版PPT本章内容20.1 电子邮件简介20.2 Sendmail服务器安装和配置20.3 配置Sendmail客户端20.4 Sendmail服务器认证20.1 电子邮件简介20.1.1 什么是电子邮件20.1.2 邮件系统组成什么是电子邮件什么是电子邮件 电子邮件是一种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。通过电子邮件系统,用户可以以非常低廉的价格、非常快速的方式,与世界上任何一个角落的网络用户联系。电子邮件可以是文字、图像和声音等多种形式。电子邮件的存在极大的方便了人与人之间的沟通与交流,促进了社会的发展。使用电子邮件具有传播速度快、方便便捷、成本低廉、广泛的交流对象以及信息多样化等优点。邮件系统组成邮件系统组成 邮件用户代理(MUA)邮件传输代理(MTA)邮件投递代理(MDA)20.2 Sendmail服务器安装和配置20.2.1 安装Sendmail服务器软件包20.2.2 /etc/mail/sendmail.mc文件详解20.2.3 /etc/mail/local-host-names文件详解20.2.4 /etc/mail/access文件详解20.2.5 /etc/aliases文件详解20.2.6 /etc/mail/userdb文件详解20.2.7 Sendmail服务器配置实例20.2.8 配置dovecot服务器20.2.9 测试发送Sendmail邮件安装安装Sendmail服务器软件包服务器软件包 rootrhel#cd/run/media/root/RHEL-7.2 Server.x86_64/Packagesrootrhel Packages#rpm-ivh procmail-3.22-35.el7.x86_64.rpm rootrhel Packages#rpm-ivh m4-1.4.16-10.el7.x86_64.rpmrootrhel Packages#rpm-ivh sendmail-8.14.7-4.el7.x86_64.rpmrootrhel Packages#rpm-ivh sendmail-cf-8.14.7-4.el7.noarch.rpm/etc/mail/sendmail.mc文件详解文件详解 Sendmail服务器的守护进程在运行时会读取/etc/mail/sendmail.cf和/etc/mail/submit.cf这两个文件,但是这两个文件配置起来太复杂,一般不会直接去修改,而是去修改/etc/mail/sendmail.mc和/etc/mail/submit.mc文件。Sendmail服务器的第一个配置文件是/etc/mail/sendmail.cf,该文件决定Sendmail的属性,定义Sendmail服务器在哪一个域上工作以及开启某些验证机制。文件内容是特定宏语言编写,都是计算机生成的,该文件实在是过于复杂,我们只需要通过修改/etc/mail/sendmail.mc文件,并且使用m4命令将/etc/mail/sendmail.mc文件编译成/etc/mail/sendmail.cf文件即可。/etc/mail/sendmail.mc文件参数(文件参数(1)define(confDEF_USER_ID,8:12)dnl指定Sendmail使用的用户ID为8,组ID为12。define(confTO_CONNECT,1m)dnl设置等待连接的最长时间为1分钟。define(confTRY_NULL_MX_LIST,True)dnl如果MX记录指向本机,那么Sendmail直接连接到远程计算机。define(confDONT_PROBE_INTERFACES,True)dnlSendmail不会自动将服务器的网络接口视为有效地址。define(PROCMAIL_MAILER_PATH,/usr/bin/procmail)dnl设置procmail的存储路径。define(ALIAS_FILE,/etc/aliases)dnl设置邮件别名文件的存储路径。define(STATUS_FILE,/var/log/mail/statistics)dnl设置邮件日志文件的存储路径。define(UUCP_MAILER_MAX,2000000)dnl设置基于UUCP协议的Mailer处理信息的最大限制为2MB。define(confUSERDB_SPEC,/etc/mail/userdb.db)dnl设置用户数据库文件的路径。define(confTO_IDENT,0)dnl设置ident查询响应的最大等待时间为0秒。FEATURE(mailertable,hash-o/etc/mail/mailertable.db)dnl设置邮件发送器数据库的存储路径。/etc/mail/sendmail.mc文件参数(文件参数(2)FEATURE(virtusertable,hash-o/etc/mail/virtusertable.db)dnl设置虚拟邮件域数据库的存储路径。FEATURE(always_add_domain)dnl增加主机名到所有本地发送的邮件。FEATURE(use_cw_file)dnl加载/etc/mail/local-host-names文件中定义的主机名。FEATURE(local_procmail,procmail-t-Y-a$h-d$u)dnl使用procmail作为本地邮件发送者。FEATURE(access_db,hash-T-o/etc/mail/access.db)dnl从指定数据库中加载可中继的域。FEATURE(blacklist_recipients)dnl根据访问数据库的值过滤外来邮件。EXPOSED_USER(root)dnl禁止伪装发送者地址中出现root用户。DAEMON_OPTIONS(Port=smtp,Addr=127.0.0.1,Name=MTA)dnl指定Sendmail作为MTA运行时的参数。FEATURE(accept_unresolvable_domains)dnl可接收不能由DNS解析的主机所发送的邮件。LOCAL_DOMAIN(localhost.localdomain)dnl设置本地域。MAILER(smtp)dnl指定Sendmail所有SMTP发送者,包括smtp、esmtp、smtp8和relay。/etc/mail/local-host-names文件详解文件详解 必须在/etc/mail/local-host-names文件中定义收发邮件的主机名称和主机别名,否则无法正常收发邮件。修改/etc/mail/local-host-names文件,在该文件内可以添加以下内容。 在默认情况下,SMTP协议是不需要经过身份验证的,任何用户通过使用telnet方式都可以连接到本地邮件服务器的25端口上,并发送邮件。为了避免不必要的麻烦,Sendmail中的缺省配置直接禁止其它主机利用本地Sendmail服务器投递邮件。使用/etc/mail/access文件可以用于控制邮件中继和邮件的进出管理,可以使用/etc/mail/access文件允许某些客户端可以使用此Sendmail服务器转发邮件。/etc/mail/access文件地址字段格式 格式格式举例举例说明说明一个特定域内的所有主机IP address192.168.0一个特定网段内的所有主机192.168.0.2一个特定IP地址的主机一个特定的邮箱地址usernamezhangsan一个特定用户的邮箱地址/etc/mail/acess文件操作字段格式 格式格式说明说明OK无条件接收或者发送邮件RELAY允许SMTP代理投递转发邮件REJECT拒绝接收邮件并发布错误信息DISCARD丢弃邮件,不发布错误信息创建数据库映射 对/etc/mail/access文件配置好之后,必须使用makemap命令为Sendmail创建数据库映射,建立新的/etc/mail/access.db数据库。映射类型常用hash数据库格式。使用以下命令建立新的/etc/mail/access.db数据库。rootrhel#makemap hash/etc/mail/access.db/etc/mail/access/etc/aliases文件详解文件详解 在Sendmail决定邮件的接收者的目的地之前,它会先试图在别名中查找。Sendmail的主要的别名配置文件是/etc/aliases。为了优化查找,Sendmail为其别名记录建立了一个哈希表数据库/etc/aliases.db。该文件通过newalias命令产生。/etc/aliases文件的格式如下所示。真实用户账户:别名1,别名2/etc/mail/userdb文件详解文件详解/etc/mail/userdb.db是一个散列表数据库,它是通过/etc/mail/userdb文件产生的。/etc/mail/userdb文件默认不存在,需要手工创建。/etc/mail/userdb文件的格式如下所示。入站地址:maildrop 被改写的入站地址出站地址:mailname 被改写的出站地址生成/etc/mail/userdb.dbSendmail不会直接读取/etc/userdb文件,而是读取该文件创建的数据库。/etc/mail/userdb文件创建好之后,使用makemap命令生成/etc/mail/userdb.db。rootrhel#makemap btree/etc/mail/userdb.db /etc/mail/userdbSendmail服务器配置实例服务器配置实例 在公司内部配置一台Sendmail服务器,为公司网络内的客户端计算机提供邮件收发服务,具体参数如下。DNS域名:。DNS服务器IP地址:192.168.0.2。Sendmail服务器IP地址:192.168.0.2。Sendmail服务器MX记录:。公司网络:192.168.0.0。设置能够给公司全体员工群发邮件。配置配置dovecot服务器服务器 Sendmail是一个MTA(邮件传输代理),它只提供SMTP服务,这就是说它只通过电子邮件的转发和本地分发功能,但是如果要实现异地接收邮件,就必须要POP3和IMAP服务的支持。一般情况下,SMTP服务和POP3、IMAP服务都安装在同一台服务器上。在Linux系统中,dovecot软件包可以同时提供POP3和IMAP服务。1安装dovecot软件包2编辑/etc/dovecot/dovecot.conf文件3启动dovecot服务4查看端口号测试发送测试发送Sendmail邮件邮件 SMTP协议监听端口号25,才能同其它邮件服务器传递邮件,通过使用telnet命令登录Sendmail服务器的25端口,模拟邮件服务器,发送邮件给所在服务器的用户。rootlinux#telnet 192.168.0.2 2520.3 配置Sendmail客户端20.3.1 Linux客户端配置20.3.2 Windows客户端配置Linux客户端配置1编辑/etc/resolv.conf文件2使用mail命令发送邮件3使用mail命令接收邮件Windows客户端配置在Windows 10客户端上,可以使用Microsoft Outlook 2016。20.4 Sendmail服务器认证服务器认证在互联网上运行的Sendmail服务器,必须启用中继功能才能转发外部邮件,但是如果不加以限制,那么会使非法用户有机会执行各种操作,比如发送垃圾邮件,甚至被其它邮件服务器屏蔽,无法向外部转发邮件。通过Sendmail服务器认证功能,基于SASL验证邮件使用者的账户和密码,能够有效的拒绝非法用户使用Sendmail服务器中继邮件。1安装SASL库2编辑/etc/mail/sendmail.mc文件3重新启动sendmail服务4验证SASL5设置发送服务器要求验证