sendmail

  • sendmail限制用户发送的邮件的大小

    ·

    之前在一份国赛的试题上看到有一题要求限制sendmail发送邮件的附件大小,但是我翻遍了百度和谷歌,试遍了各种方法,也询问了来学校培训Linux的两位老师及外校一名久负盛名的指导教师,均未能得到有效答案。 记忆犹新的是,当我和其中一位培训老师说,我试遍了各种方法也行不通,想请老师指点的时候,对方直接抛给我一句话:我不知道,但这个题目已经考了好几次了,你在质疑赛题的准确性?自己百度去。。。汗。。。 最后我不得不妥协一步,既然无法限制附件的大小,那我直接限制整封邮件的大小好啦(邮件大小=正文+附件+邮件信息等附加内容的大小总和)。 编辑sendmail的/etc/mail/sendmail.cf配置文件 # vim /etc/mail/sendmail.cf 转到第186行(因软件版本号不同位置可能略有不同,可在vim中搜索关键字来查找),可以看到如下内容(翻译成中文是,每条消息的最大大小): 将# O MaxMessageSize=0选项前的注释去掉,其参数值就是每封邮件的最大值,单位是KB。例如,我想限制用户只能发送2MB大小的邮件则可以将其修改为如下形式: O MaxMessageSize=2048 保存退出后直接重启sendmail服务就可以,不需要使用m4工具重新生成sendmail.cf文件,因为我们编辑的就是sendmail.cf文件。 # service sendmail restart 最后,尽情测试吧。

    Read More

  • 浅析邮件服务器原理

    ·

    上面的架构图中包含两组邮件系统、两个客户端和一个DNS服务器,其中的邮件系统是企业中比较经典的架构形式,下面我将依据此图来简述邮件服务器的工作流程。 名词解释: MUA 接收邮件所使用的邮件客户端,使用IMAP或POP3协议与服务器通信,常见的有:outlook、foxmail; MTA 通过SMTP协议发送、转发邮件,常见的有:sendmail、postfix、qmail; MDA 将MTA接收到的邮件保存到磁盘或指定地方,通常会进行垃圾邮件及病毒扫描; MRA 负责实现IMAP与POP3协议,与MUA进行交互; SMTP 传输发送邮件所使用的标准协议; IMAP 接收邮件使用的标准协议之一; POP3 接收邮件使用的标准协议之一; MailBox 用户邮箱; cyrus-SASL及courier-authlib 提供用户认证相关的支持。 SQL 数据库,用于存储用户身份信息 前面的架构图中,MUA想发送邮件,就要将邮件通过SMTP协议送到MTA上,MTA通常会要求用户认证身份(也可不认证),认证通常使用SASL,认证源可以是像上面的架构图中那样使用SQL数据库也可以使用其他方式。MTA收到邮件后会检查邮件目的地址的邮件域,此时会产生两种情况。情况一,目的邮件域是本服务器:如果发现是本服务器的邮件域则将邮件送到MDA,由MDA将其投递到用户的邮箱(MailBox)中。最后用户在MUA上使用POP3/IMAP协议链接MRA,MRA通常也会要求用户认证身份,其认证源同MTA一样可以是SQL也可以是其他方式,若认证通过,则允许MUA读取邮件信息。情况二,目的邮件域非本服务器:若是邮件域是其他邮件服务器的,则MTA会发送UDP报文向DNS服务器查询邮件域对应的邮件主机,并最终解析出其IP地址,随后MTA会查询本服务器的转发控制策略,若允许转发,则将邮件转发到该域对应的服务器上,最终会重复情况一中MTA收到邮件后的处理方式。

    Read More

  • sendmail邮件传输服务器

    ·

    前言: sendmail是UNIX和Linux下的老牌邮件传输代理程序(MTA),以稳定著称,一个调教的好的sendmail服务器能承受很大的任务量,其在企业中也比较常用。 本专题将向你介绍sendmail服务器的配置方法及配置过程中的注意事项。 实验环境: 服务器操作系统:CentOS 6.5 所用软件包:sendmail-8.14.4-8.el6.x86_64、sendmail-cf-8.14.4-8.el6.noarch、dovecot-2.0.9-7.el6.x86_64、bind-9.8.2-0.17.rc1.el6_4.6.x86_64、cyrus-sasl-plain.x86_64 0:2.1.23-13.el6_3.1、cyrus-sasl-devel.x86_64 0:2.1.23-13.el6_3.1 客户端操作系统:Windows 7 邮件客户端:FoxMail 文章列表: 一、邮件服务器工作原理浅析 二、使用sendmail搭建简单邮件传输服务 三、使用dovecot搭建简单邮件接收代理服务 四、sendmail开启基于sasl的smtp认证 五、sendmail下的邮件转发控制 六、sendmail下的邮件群发配置 七、用户邮箱大小限制 八、限制每封邮件的大小 常见问题及解决方案: 一、sendmail启动缓慢的解决方法   本专题内文章均为原创,谢绝转载。

    Read More

  • sendmail启动缓慢的解决方法

    ·

    问题表现: 原本配置的好好的sendmail服务,速度飕飕的。直到某一个月黑风高的夜晚,你重启服务会发现关闭的很快,但启动时巨慢无比。 解决方法(不保证百分百有效): 这个问题通常是在更改了主机名的时候产生的,解决办法就是编辑/etc/hosts文件 vim /etc/hosts 在文件末尾添加如下内容: 你的公网ip地址     你的主机名.      你的主机名                //注意第一个主机名后面有一个“.”!!! 例如: 我的公网ip是192.168.162.246      主机名是mail2 保存此文件,然后再重启senmdail试一下,又感受到了以往的速度是不是?

    Read More

  • sendmail开启基于sasl的smtp认证

    ·

    sendmail默认是不会认证发信人身份的,这就导致你的邮件服务器可能会被人随意的发送垃圾邮件。 而开启smtp认证之后,只有认证身份的用户才可以发送邮件,这样就很好的解决了上面的安全因患。 软件包安装: 开始设置前首先要确保你的CentOS上已经安装了如下四个软件包(sasl认证相关)。 cyrus-sasl-2.1.10-4.i386.rpm cyrus-sasl-md5-2.1.10-4.i386.rpm cyrus-sasl-plain-2.1.22-5.el5 cyrus-sasl-devel-2.1.22-5.el5 一般CentOS 6.5系统中都会内置前两个包,我们执行安装命令安装余下两个包。 [root@localhost ~]# yum install *sasl-p* [root@localhost ~]# yum install *sasl-d* *sendmail配置部分:* 编辑/etc/mail/sendmail.mc文件 [root@localhost ~]# vim /etc/mail/sendmail.mc 转到第52行(因软件版本号差异,行号可能不同)可以看到如下两条语句,去掉这两行前面的注释dnl #(注:前往不要留有空格,否则报错)。 修改后如图: TRUST_AUTH_MECH的作用是使sendmail不管access文件中如何设置, 都能relay那些通过EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮件,注意这里是对需要relay的邮件进行验证,这点很重要,只有这样通过验证的邮件才会被 relay以防止sendmail服务器被滥用。 confAUTH_MECHANISMS的作用是确定系统的认证方式。Outlook Express支持的认证方式是LOGIN。 保存并退出。 生成对应的sendmail.cf文件。 [root@localhost ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 重启sendmail服务。 [root@localhost ~]# service sendmail restart 启动saslauthd服务,用于支持sasl认证。 [root@localhost ~]# service…

    Read More

  • sendmail邮件群发配置

    ·

    解决思路: 邮件群发的配置过程非常简单,只需要为需要群发的邮箱配置一个统一的别名即可。发信时信件发给别名,这样即可发送给别名所对应的每一个邮箱账号了。 配置过程: 1、添加别名,编辑系统配置文件/etc/aliases vim /etc/aliases 将光标移至文件末尾,添加别名。 格式:别名:        邮箱账户名1,邮箱账户名2,邮箱账户名3 本实验中别名为test,邮箱账户名分别为user1、user2,配置如下图。 配置文件修改后需要生成对应的数据库文件才能被sendmail读取。 数据库文件生成命令: newaliases 重启sendmail,让其读取别名数据库。 service sendmail restart 最后,发送一封邮件给别名邮箱看看其对应的邮箱用户能不能收到吧!

    Read More

  • sendmail下配置/etc/mail/access文件实现邮件转发控制

    ·

    前言 /etc/mail/access 文件是sendmail的转发控制文件,用以定义对特定网段、域中的主机发来的邮件的处理方式。 基本格式: [标签]:[参数]  [制约关键字] 示例: 标签: Connect: 检查对象域名或IP From: 检查对象 送信人地址 To: 检查对象 收信人地址 不加标签的默认为Connect。 制约关键字: OK : 只接收发给自己/本地的邮件. 其他的全部拒绝并向送信服务器返回错误消息(未指定制约关键字的默认值为OK)。 RELAY: 允许接收允许转发。 REJECT:拒绝接收/转发,向送信服务器返回错误消息。 500: 与reject基本相同,拒绝接收/转发,并向送信服务器返回错误消息和原邮件。 DISCARD:丢弃接收到的邮件,并且不向送信邮件服务器返回任何消息。 ERROR:拒绝接收/转发并向发信服务器返回指定的错误消息,格式参见前面的示例。 注意事项: 修改完文件后记得生成对应的数据库文件,否则是不会生效的。 [root@localhost ~]# makemap hash /etc/mail/access < /etc/mail/access //生成数据库文件 最后,在保证防火墙和SELinux均正确配置的情况下重启sendmail服务使配置生效。 [root@localhost ~]# service sendmail restart

    Read More

  • CentOS 6下使用sendmail搭建简单邮件传输服务器

    ·

    介绍: sendmail是linux/unix下比较常用的开源免费邮件传输代理程序(MTA)。 需要安装的软件包: sendmail(邮件传输代理,用于发送及转发邮件,使用smtp协议) sendmail-cf(包含配置过程中需要使用的m4工具) 安装命令: yum install -y sendmail sendmail-cf DNS配置: DNS服务器的配置方法参考此篇文章: https://www.ibadboy.net/archives/1027.html 最终要求添加一个sx.com的域名并配置DNS解析为如下形式: 本实验中DNS服务器IP地址:192.168.162.244,邮件服务器IP地址:192.168.162.245。 注意MX记录要写在前面(如上图),否则会出错。 配置完DNS服务器之后别忘了将邮件传输服务器的DNS修改为DNS服务器的地址,否则会导致邮件传输服务器无法转发邮件哦。 Centos下修改DNS的方法参考此篇文章: https://www.ibadboy.net/archives/1055.html sendmail配置部分: sendmail主配置文件: 实际上sandmail的主配置文件是/etc/mail/sendmail.cf,但因为该配置文件使用宏语言编写,一般人难以看懂更别提编辑了。所以sendmail提供了一个/etc/mail/sendmail.mc文件,此文件可读性远远大于sendmail.cf,使用者可以直接编辑sendmail.mc文件再通过m4工具生成相对应的sendmail.cf配置文件供sendmail读取。 使用vim文本编辑器打开sendmail.mc vim /etc/mail/sendmail.mc 找到第116行(因软件版本差异行号可能对不上),如下图,将此行中Addr=127.0.0.1修改为本机公网IP地址(MX记录对应的域名所解析出的IP地址,本实验中为192.168.162.245),也可以改为0.0.0.0。这里是定义让sendmail监听哪个地址,默认是监听127.0.0.1(本地回环),修改为0.0.0.0是监听所有地址,也可以像本实验中设置的只监听某个指定的公网地址。 修改后如图: 保存并退出。 使用m4工具生成与刚刚编辑的sendmail.mc相对应的sendmail.cf文件 m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 编辑/etc/mail/access文件定义允许接收或转发哪些主机的邮件。 vim /etc/mail/access 如上图,定义了允许接收并转发192.168.162网段中所有主机的邮件。 关于/etc/mail/access配置文件的详细配置方法请转到此篇文章了解: https://www.ibadboy.net/archives/676.html 保存并退出 生成与刚刚编辑的/etc/mail/access相对应的数据库文件。 makemap hash /etc/mail/access < /etc/mail/access 编辑/etc/mail/local-host-names定义本机的域(如不定义,默认以主机名作为本机域),当sendmail收到邮件时会依据此文件来判断邮件的目标地址是本域还是其他域,如果是本域则投递到对应账号的邮箱内,如果是其他域则进行转发。 vim /etc/mail/local-host-names 配置方法很简单,一行一个域名即可,如下图。 保存并退出,自此sendmail部分配置完成。 启动服务: 在保证selinux及防火墙均已关闭的情况下启动sendmail服务。 service…

    Read More