首页 运维 正文
sendmail邮件服务权限的设定

 2022-10-23    483  

  设定sendmail 邮件服务器使用权限:

  /etc/mail/access

  在你启动了 Sendmail 以及设定好主机名称 ( local-host-names )之后,那你就可以利用『在你的主机上面利用你的主机来寄信』了!为什么要加上『在你的主机上面』呢?还记得我们在前面有提过,为了杜绝广告与垃圾信件,所以预设的情况中, Sendmail 是关闭 Open Relay 的对吧!但是为了主机使用者的方便,所以我们预设是有启动 local 这个 Mailer ,也就是说:

  1. 只有使用者是在主机上面发信的,例如使用 SSH 登入主机后,以 mail 这个指令来发信;

  2. 又或者使用者直接在主机上面使用 X-Window System 里面的邮件代理人,亦即是 Netscape 或者是 Kmail 等软件来发信

  的时候,我们的 Sendmail 才会帮使用者『寄信』喔!至于其它的计算机来源的『寄信』邮件,Sendmail 一概将他退信回去!那么如果我想要在其它的计算机上面使用我这部 Mail Server 来寄信呢?这个时候就要编辑『/etc/mail/access』这个信任网域设定的档案啦!假设一个例子好了:

  我的 Sendmail 主机想要支持我内部网域的所有计算机来寄信,而我内部网域的计算机 IP 网段为 192.168.0.0/24 这一段;

  还有,我另外有一个公共 IP ( Public IP )为 140.116.44.125 ,也想要让他可以寄信;

  此外,我发现 192.168.1.100 计算机使用者都会乱寄垃圾给我的邮件主机,所以我想要挡掉他;

  那个 h8h.com 也有问题,我也要挡掉这个网域 (domain) 的来源;

  更发现有个使用者叫做 test@testing.domain.name 也是色情广告信业者!那么我可以怎样设定 Sendmail 的存取权限呢?

sendmail

  在 /etc/mail/access 当中,只要有加上 # 就是批注内容,所以不会被读入数据库当中!其实真正的 Sendmail 可以读得到的数据库是 /etc/mail/access.db 这个档案,不过,我们必需先在 /etc/mail/access 编辑完毕后,再以 makemap 这支程序将他改写成为数据库!所以,不要忘记 makemap 那个步骤喔!由上面的档案我们就可以知道啦, access 的语法为

  规定的范围:规定可以在sendmail上面的动作

  IP/不完整IP/主机名称/E-mail RELAY/DISCARD/REJECT

  在『规定范围』与『规定可以在 sendmail 上面的动作』两项目之间最好以 按键来隔开会比较正确!『规定的范围』还可以设定『来源』与『目的』喔!例如:

  from:test@your-domain.com.tw REJECT

  to:blah@your-domain.com.tw REJECT

  当信件想要使用我们的邮件主机来进行寄信或者是 Relay 的动作时,首先会传送 mail header 到我们的 mail server 上面,这也就是一些邮件的基本数据(如认证信息、来源IP、目标的 MTA 等等),但并不包含邮件的内容(例如信件本体、附件夹带等等的内容)。也就是说,一封邮件基本上可以分为两大部分,分别是 Header 与 Body ,Header 仅记录邮件基本信息,Body 才是真正的信件内容。当邮件想要进入 MTA 时,会先发送 Header 给 MTA ,MTA 判断这个 Header 的信息是可接受的之后,才后继续接受来源主机的邮件 Body 内容!如果这些基本讯息传送过来的主机信息包括在 /etc/mail/access.db 里面所记录到的主机(或IP)范围时,就可以指定底下这些动作:

  RELAY:允许该来源主机所传送过来的邮件可以被接受,然后再进行 Relay 的动作。以上面的范例为例,则 192.168.0.0/24 来源的计算机所发送来我们 Mail Server 的邮件将会被接受喔!•REJECT:若来源主机的主机名称或 IP 在 REJECT 的情况下,则我们 Mail Server 将不会接受对方的邮件内容(就是 body 部分),『并且会回传一个错误或警告讯息给原发信端』喔!•DISCARD:与 REJECT 相似,亦即关闭规定范围内的计算机主机的 RELAY 功能,不过, Sendmail 会直接将该信件『丢弃』而不会『退回』!通常我们比较建议使用 DISCARD 啦!为什么呢?如果该 IP 来源传送的是广告信件,您又使用 REJECT 的话,那么两方面的邮件主机将会一再地进行 mail header 的传送,也是挺消耗频宽的!所以我们比较建议使用 DISCARD!再来,由于 access 不支持网域的写法,亦即

  192.168.0.0/24

  192.168.0.0/255.255.255.0

  这种类型的网域写法并不能被使用的!所以,只能以 192.168.0 这种写法来达成整个网域的设定了!也就是说, access 里面大概只能支持 A/B/C Class 的网域, subnet 大概就无法达成了!只能一个一个 IP 的 Keyin 啰!编辑完这个档案之后,就可以让你的其它主机使用 Sendmail 的 Relay 功能啰!还不赖吧!

原文链接:https://77isp.com/post/9034.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。