📄 00000012.htm
字号:
别名的右侧也可以是文件或程序。例如,上面的postmaster别名可以用这样方法来设 <BR>置: <BR> <BR> postmaster::include:/etc/mail/myaliases <BR> <BR> :include:关键字表示让sendmail去读取对应的包含文件。而/etc/mail/myaliases的 <BR>内容要设置成: <BR> <BR> supervisor <BR> <BR> manager <BR> <BR> 就可以了。 <BR> <BR> 要把邮件重定向到程序,可以使用管道,例如: <BR> <BR> test_param:"|/home/test/test" <BR> <BR> 那么,sendmail会将发给test_param的邮件的内容作为/home/test/test程序的输入来 <BR>执行这个程序。 <BR> <BR> 在修改了别名文件之后,需要用-bi参数重新初始化别名数据库: <BR> <BR> sendmail –bi <BR> <BR> 另一个常用的办法是重定向。如果你在模板文件中定义了REDIRECT特性,那么可以使 <BR>用这个功能。例如,某个人在你的机器上开了一个账户user1,后来迁移到user2@serve <BR>r2.com。那么,你可以将其别名写成 <BR> <BR> user1: <A HREF="mailto:user2@server2.com.REDIRECT">user2@server2.com.REDIRECT</A> <BR> <BR> 以后当有人向这个地址发信的时候,你的sendmail会将其退回,并且返回一个551 Us <BR>er not local; please try <A HREF="mailto:user2@server2.com的信息。">user2@server2.com的信息。</A> <BR> <BR> 在使用别名的时候,必须注意的是不要造成循环,例如user1转发给user2,user2又将 <BR>其转发给user1....如此循环。在这种情况下,转发17次后,sendmail将把它退还给发信 <BR>人。最常见的错误发生在你试图在转发邮件的同时在本地保留备份的情况下,例如: <BR> <BR> user1: user1,user2 <BR> <BR> 就构成了一个循环。 <BR> <BR> 要在本地保留备份,使用\转义符号,例如 <BR> <BR> user1: \user1,user2 <BR> <BR> 建立了别名文件之后,需要将其初始化,这可以通过newaliases命令完成: <BR> <BR> [root@mail mail]# newaliases <BR> <BR> /etc/aliases: 17 aliases, longest 31 bytes, 241 bytes total <BR> <BR> 也可以使用sendmail –bi命令: <BR> <BR> [root@mail mail]# sendmail -bi <BR> <BR> /etc/aliases: 17 aliases, longest 31 bytes, 241 bytes total <BR> <BR> 两种方式实际是完全一样的。 <BR> <BR> 类似于通过aliases文件进行邮件转发,用户也可以使用自己的转发文件,例如,某个 <BR>用户user1想让发送给自己的邮件全部转发到<A HREF="mailto:user2@domain.com,但是又不希望建立全局">user2@domain.com,但是又不希望建立全局</A> <BR>的用户别名,那么可以在自己的宿主目录下面建立一个.forward文件,内容只要一行: <BR> <BR> <A HREF="mailto:user2@domain.com">user2@domain.com</A> <BR> <BR> 就可以了。 <BR> <BR> 这种技术可以让每个用户自己管理自己的邮件别名。 <BR> <BR> 允许投递 <BR> <BR> 如同我们说的那样,smtp协议是不需要身份认证的,也就是说任何人都可能telnet到 <BR>你的25端口并且发送莫名其妙的邮件。为了避免不必要的麻烦,比较高版本的sendmail <BR>缺省直接禁止其他不明身份的机器利用你的系统投递邮件。这种情况下,一个非本地的 <BR>机器使用你的系统投递会产生一个"550 relay denied"错误。但是如果你要作一个邮件 <BR>服务器,你终究得打开投递代理功能。 <BR> <BR> sendmail的第一个投递代理设置文件是relay-domains。这个文件是一个简单的文本文 <BR>件,文件的缺省名字是/etc/mail/relay-domains,可以在confCR_FILE中定义。内容类 <BR>似这样: <BR> <BR> yourdomain.com <BR> <BR> #所有*.yourdomain.com的机器可以使用你的机器作为smtp服务。 <BR> <BR> 192.168 <BR> <BR> #所有192.168.*.*的机器可以使用你的机器作为服务 <BR> <BR> /etc/mail/relay-domains文件是一个简单文本文件,当需要投递的域很多的时候,其 <BR>效率不是很高。因此,sendmail还可以使用access.db来设定哪些地址的机器可以连接到 <BR>你的25端口投递信件。这个文件的缺省名字是/etc/mail/access.db,但是可以用FEATU <BR>RE(access_db)来修改(例如:FEATURE(access_db,`hash –o /etc/access')。 <BR> <BR> 一般/etc/mail/access.db是一个散列表数据库,它是用/etc/mail/access为模版产生 <BR>出来的。/etc/mail/access文件的格式是这样: <BR> <BR> [地址] [操作] <BR> <BR> 中间的分割符是空格键。 <BR> <BR> [地址]栏可以是主机地址或者名字,也可以是统配符,规则是这样: <BR> <BR> yourdomain.com 代表所有*.yourdomain.com的名字。 <BR> <BR> 192.168.12 代表所有192.168.12.*的地址。 <BR> <BR> 202.135 代表所有202.135.*.*的地址。 <BR> <BR> <A HREF="mailto:someone@somedomain.com">someone@somedomain.com</A> 代表一个特定的邮件发信人 <BR> <BR> 而在每个地址后面可以跟上相应的操作,通常的操作有 <BR> <BR> OK 正常接受这封邮件 <BR> <BR> RELAY 允许SMTP代理投递,这样这封邮件就可以从你的机器中转到别的机器上去 <BR> <BR> REJECT 拒绝接受 <BR> <BR> DISCARD 忽略这封邮件,这种情况下,邮件看上去是正常投递了,但是由于没有人接 <BR>受,邮件会自动地“消失”在网络中。 <BR> <BR> 错误代码+任何其他字符串:将向发信者返回这个字符串作为出错信息。错误代码是R <BR>FC 822定义的标准出错代码。例如 <BR> <BR> 550 We don't like a spammer! <BR> <BR> 客户机器在投递邮件的时候,就会产生一个“we don't like a spammer”投递失败信 <BR>息。比如,你认为someone@spammer是个专门投递垃圾邮件的家伙,那么你可以这样写: <BR> <BR> someone@spammer 550 we don't like a spammer <BR> <BR> 修改了access文件之后,需要重新生成一下access.db,这可以用makemap命令完成: <BR> <BR> makemap hash access.db < access <BR> <BR> 然后重新启动sendmail就可以使用这些功能了。 <BR> <BR> 虚拟域 <BR> <BR> 如同Apache一样,sendmail也允许使用虚拟主机功能,这是通过FEATURE(virtuserta <BR>ble)功能实现的,而虚拟主机的文件缺省是/etc/mail/virtusertable.db,它用/etc/m <BR>ail/virtusertable文件生成,这个文件的形式类似于aliases文件,即左地址 右地址 <BR>,中间用Tab键分开。例如: <BR> <BR> <A HREF="mailto:someone@otherdomain.com">someone@otherdomain.com</A> localuser <BR> <BR> 这样一行意味着本来应该发送给<A HREF="mailto:someone@otherdomain.com的邮件现在要发送给本机的">someone@otherdomain.com的邮件现在要发送给本机的</A> <BR>用户localuser。当然,这意味着:第一,你的DNS记录中,本机应该是otherdomain.co <BR>m的MX交换器;第二,你的本机sendmail.cw文件应该包含otherdomain.com这个名字。 <BR> <BR> 当然纯粹的这样的域意义不大,但是sendmail还支持邮件虚拟域的参数翻译。例如: <BR> <BR> <A HREF="mailto:@testdomain.com">@testdomain.com</A> <A HREF="mailto:test@mydomain.com">test@mydomain.com</A> <BR> <BR> 意味着所有发往<A HREF="mailto:xxx@testdomain的邮件都会被发送到test@mydomain.com。而">xxx@testdomain的邮件都会被发送到test@mydomain.com。而</A> <BR> <BR> <A HREF="mailto:@testdomain.com">@testdomain.com</A> %<A HREF="mailto:1test@mydomain.com">1test@mydomain.com</A> <BR> <BR> 则代表参数转义,例如<A HREF="mailto:user1@testdomain.com的邮件被发送到user1test@mydomain.c">user1@testdomain.com的邮件被发送到user1test@mydomain.c</A> <BR>om,<A HREF="mailto:user2@testdomain.com被发送到user2test@mydomain.com。同样,这样的功能也要">user2@testdomain.com被发送到user2test@mydomain.com。同样,这样的功能也要</A> <BR>通过MX记录和CW文件加上去。 <BR> <BR> 建立virtusertable的方法与建立access的办法是一样的: <BR> <BR> makemap hash virtusertable.db < virtusertable <BR> <BR> 然后重新启动sendmail。 <BR> <BR> 定义邮差 <BR> <BR> /etc/mail/mailertable文件(在FEATURE(`mailertable’)里定义)用来定义对某个 <BR>域名或者用户使用什么样的邮差,如local:user,smtp:mail.test1等等。一般情况下, <BR>并不需要定义这个功能。建立这个文件的方式与上面的几个hash数据库相同。 <BR> <BR> 需要注意的是,当前版本的sendmail对各种附加文件和配置文件的属性都有着严格的 <BR>要求,特别是/etc/aliases文件,必须至少为0644以避免非授权的修改。 <BR> <BR> 7.1.3 邮件分拣 <BR> <BR> Linux的sendmail使用procmail作为信件的最终投递代理。这个程序有一些非常有用的 <BR>,对于我们来说,最重要的功能是信件的自动过滤和分拣功能。 <BR> <BR> 信件分拣大概是用户最希望的功能,它按照邮件的文件头(发信地址,收信地址等等 <BR>)甚至邮件的正文进行归类,并且可以自动存放在各个文件中或者转发给别的用户账号 <BR>。马上我们会看到,用procmail配置自动分拣是一件非常容易的事情。 <BR> <BR> 通常的sendmail配置中已经使用了procmail作为邮件最终投递代理,如果你的sendma <BR>il已经改乱了,可以使用FEATURE(local_procmail)设置这个功能。 <BR> <BR> procmail主要依靠用户宿主目录下面的.procmailrc中的信息来处理邮件.如果这个配 <BR>制文件不存在,则procmail只是简单的将邮件保存到用户的信箱中. <BR> <BR> 一般来说,.procmailrc文件由配置行和行为规则组成。配置行是一些基本参数的设置 <BR>,不过一般配置行可以不写;而行为规则通常由(查询)(行为)完成,下面是一个简 <BR>单的例子: <BR> <BR> :0 H <BR> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -