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

Linux系统中配置sendmail和dovecot

网上介绍sendmail的文章千百种,很少有跟着做下来一次成功的。多少都有些说的不准确的地方。我给大家共享一下我经过实验环境测试,完全可行的方法。1.软件准备操作系统:centos5.0我选择centos5,最新的操作系统,不要再用redhat9了,很久没有更新了,企
网上介绍sendmail的文章千百种,很少有跟着做下来一次成功的。多少都有些说的不准确的地方。我给大家共享一下我经过实验环境测试,完全可行的方法。 1.软件准备
操作系统:centos5.0
我选择centos5,最新的操作系统,不要再用redhat9了,很久没有更新了,企业里用有风险的。更新换代吧。
以下软件,centos5全部自带,无需另外下载。
邮件系统:
 sendmail8.13
 sendmail-cf-8.13
 m4-1.4
pop3认证:dovecot-1.0
smtp认证:
          cyrus-sasl-2.1
          cyrus-sasl-md5-2.1
          cyrus-sasl-plain-2.1
         cyrus-sasl-lib-2.1
sasl这里,我要说一句,网上有人说“sendmail-8.13已经包含cyrus-sasl的功能,所没必要再安装cyrus-sasl”
大哥大姐们,没有cyrus-sasl用什么做认证.....sendmail官方只是说,sendmail的rpm包默认已经支持了cyrus-sasl认证方式,也就是说,sendmail会在cyrus-sasl的工作目录下自动创建相关认证配置文件,并监听25号端口,就不用你去手动自己建立配置文件和监听端口了。当有请求进入25号端口的时候,sendmail会自动找到/usr/lib/sasl2/Sendmail.conf读取认证方法。下面我会详细解释。
2.安装软件
rpm -ivh把上面软件全装上,都在光盘里呢,好装。
3.认证配置
pop3:
网上说修改/etc/dovecot.conf文件,将第17行的:#protocols = imap imaps pop3 pop3s的#去掉。其实不用,它默认已经启用了这些服务,除非你只想用dovecot-auth的认证,你可以改成protocols = none,否则不用改。
smtp:
注意,smtp稍微麻烦一下。
我讲下原理:
当用户请求进入25号端口后,sendmail调用cyrus-sasl的saslauthd进程,saslauthd要求对方输入本地系统用户的用户名和密码,当用户输入好后,saslauthd会去查找系统的/etc/shadow文件,密码确认无误,放行,告诉sendmail,这个用户合法,可以使用邮件服务来发邮件。
这时候你去/usr/lab/sasl2/下看看,sendmail已经做好了一个sendmail.conf文件,里面指明了:pwcheck_method=saslauthd,说明sendmail认证时就要调用saslauthd
所以要实现上述功能,就要设置cyrus-sasl的saslauthd,给它指定认证方式。
首先,进入/etc/sysconfig/,打开saslauthd的脚本,找到第7行的:
MECH=
等号后面不管写什么,我们都要改成:
MECH=shadow
保存
这样saslauthd才会去找shadow文件给用户做认证。
其实saslauthd还可以用自己的用户名和密码数据库做验证,但这样不方便,还要另外创建用户,不如直接用系统自身存在的用户名和密码。
4.Sendmail配置.
配置邮件服务器名称:
打开/etc/mail/local-host-names
加入你 @后面的邮箱地址。比如我这里是otto@linuxedentest.com
那么,你要在local-host-names文件里的第二行添加:
linuxedentest.com
保存
当然
local-host-names还可以设置邮箱别名,这个不多说,大家查文档看看。
改好后还要去你的dns服务器上,打上mx标志,添加A标记,用来解析dns名和地址。具体方法就要查查bind的设置方法了,或者win2003的dns设置方法。
配置sendmail.mc:
打开/etc/mail/sendmail.mc文件,
找到:
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
把前面的dnl注释去掉,变成:
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
上面两句的意思是:
放行那些通过EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮件用户,无视access文件中的设置。
confAUTH_MECHANISMS,确定系统支持的认证方式。LOGIN PLAIN 方式下,outlook用的多。
还不算完,找到:
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, )dnl
改成:
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, )dnl
这样所有ip地址都可以通过smtp端口使用我们的邮件服务器了。
-----------------------------------------------------------
这里要说一句,不要改
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
这句话!保持注释状态。
上面那句话,网上好多文章都说把Port=submission,改成Port=25,说是强制所有用户在25端口上做认证。
我不知道sendmail以前的版本是怎么样设置smtp认证的。sendmail8.13不用这么设置,这句话人家sendmail的意思是:取消注释后,一旦当25号端口被重定向或者被屏蔽,或者在25号端口打不开的情况下,马上使用587备用端口给用户做认证。
本来人家sendmail就已经打开了25端口(Port=smtp了已经),你却在这里还Port=25,把备用端口也改成25,这不是让sendmail的sm-client认
证进程和sendmail的主进程抢端口么....
-----------------------------------------------------------
到此为止,保存sendmail.mc
  
用m4重新生成sendmail.cf文件 
  
# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf 
启动dovecot进程:
/etc/init.d/dovecot start
启动saslauthd进程:
/etc/init.d/saslauthd start
启动sendmail进程:
/etc/init.d/sendmail start
把这些进程加入到启动脚本中去:
chkconfig dovecot on
chkconfig saslauthd on
chkconfig sendmail on
ok,所有设置全部完成,可以正常认证和收发邮件了。
本文如有不准确的地方,请各位海批~~~


推荐阅读
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
author-avatar
細亞米奇Mego_677
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有