sendmail

sendmail是最重要的邮件传输代理程序。理解电子邮件的工做模式是很是重要的。通常状况下,咱们把电子邮件程序分解成用户代理,传输代理和投递代理。 用户代理用来接受用户的指令,将用户的信件传送至信件传输代理,如: outlook expressfoxmail等。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱,如:procmail。
  当用户试图发送一封电子邮件的时候,他并不能直接将信件发送到对方的机器上,用户代理必须试图去寻找一个信件传输代理,把邮件提交给它。信件传输代理获得了邮件后,首先将它保存在自身的缓冲队列中,而后,根据邮件的目标地址,信件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器, 而且经过网络将邮件传送给它。对方的服务器接收到邮件以后,将其缓冲存储在本地,直到电子邮件的接收者察看本身的电子信箱。
  显然,邮件传输是从服务器到服务器的,并且每一个用户必须拥有服务器上存储信息的空间(称为信箱)才能接受邮件(发送邮件不受这个限制)。能够看到,一个邮件传输代理的主要工做是监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输而且将接收到的邮件缓冲或者 提交给最终投递程序。有许多的程序能够做为信件传输代理,可是sendmail是其中最重要的一个,事实证实它能够支持数千甚至更多的用户,并且占用的系统资源至关少。不过,sendmail的配置十分复杂,所以,也有人使用另外的一些工具,如qmail、postfix等等。
  当sendmail程序获得一封待发送的邮件的时候,它须要根据目标地址肯定将信件投递给对应的服务器,这是经过DNS服务实现的。例如一封邮件的目标地址是[email]ideal@linuxaid.com.cn[/email],那么sendmail首先肯定这个地址是用户名(ideal)+机器名(linuxaid.com.cn)的格式,而后,经过查询DNS来肯定须要把信件投递给某个服务器。
  DNS数据中,与电子邮件相关的是MX记录,例如在linuxaid.com.cn这个域的 DNS数据文件中有以下设置:
  IN MX 10 mail
  IN MX 20 mail1
  mail IN A 202.99.11.120
  mail1 IN A 202.99.11.121
  显然,在DNS中说明linuxaid.com.cn有两个信件交换(MX)服务器,因而,sendmail试图将邮件发送给二者之一。通常来讲,排在前面的的MX服务器的优先级别比较高,所以服务 器将试图链接mail.linuxaid.com.cn的25端口,试图将信件报文转发给它。若是成功,你的smtp服务器的任务就完成了,在这之后的任务,将由mail.linuxaid.com.cn来完成。在通常的状况下,mail换器会自动把信件内容转交给目标主机,不过,也存在这样的状况,目标主机(好比linuxaid.com.cn)可能并不存在,或者不执行smtp服务,而是由其mx交换器来执行信件的管理,这时候,最终的信件将保存在mx机器上,直到用户来察看它。
  若是DNS查询没法找出对某个地址的MX记录(一般由于对方没有信件交换主机),那么sendmail将是试图直接与来自邮件地址的主机对话而且发送邮件。例如,[email]test@aidgroup.linuxaid.com.cnDN[/email]S中没有对应的MX记录,所以sendmail在肯定MX交换器失败后,将从DNS取得对方的IP地址并直接和对方对话试图发送邮件。

编辑本段【sendmail工做环境】

  

sendmail

 假设用户但愿在园区网环境中架设一个电子邮件服务器,为本单位用户提供邮件服务。该服务器拥有一个合法的IP地址202.99.11.200和一个合法的域名mail.linuxaid.com.cn,而且DNS的MX记录也指向该域名(注:这里示例域名和IP地址均为伪造域名和地址)。为了知足域名需求,DNS的域数据文件应该包含如下内容:
  IN MX 10 mail
  mail IN A 202.99.11.200
  试验环境为:redhat6.二、sendmail.8.11.四、qpopper4.0.3。

编辑本段【sendmail下载】

  分别从如下地址下载sendmail和qpopper:
  sendmail.8.14.2.tar.gz [url]http://www.sendmail.org/releases[/url]
  qpopper4.0.3.tar.gz [url]http://www.eudora.com/qpopper_general/[/url]

编辑本段【sendmail的配置和安装】

  Sendmail是目前使用最为普遍的一种E-mail服务器。当前其最新的稳定版本为8.11.4。下载获得tar.gz格式的压缩包之后,将其存放在/usr/src目录下。
  解压软件包:
  [root@email src]# tar xvfz sendmail.8.11.4.tar.gz
  [root@email src]# cd sendmail-8.11.4
  编译安装:
  [root@email sendmail-8.11.4]# cd sendmail
  [root@email sendmail]# sh Build
  生成配置文件:
  [root@email sendmail]#cd /usr/src/sendmail-8.11.4/cf/cf/
  通常该目录下应该有config.mc的文件,若是没有则建立新文件config.mc,内容为:
  divert(-1)
  dnl This is the macro config file used to generate the /etc/sendmail.cf
  dnl file. If you modify thei file you will have to regenerate the
  dnl /etc/sendmail.cf by running this macro config through the m4
  dnl preprocessor:
  dnl m4 /etc/sendmail.mc > /etc/sendmail.cf
  dnl You will need to have the Sendmail-cf package installed for this to work.
  include(`/usr/src/sendmail-8.11.4/cf')
  define(`confDEF_USER_ID',`8:12')
  OSTYPE(`linux')
  undefine(`UUCP_RELAY')
  undefine(`BITNET_RELAY')
  define(`confAUTO_REBUILD')
  define(`confTO_CONNECT', `1m')
  define(`confTRY_NULL_MX_LIST',true)
  define(`confDONT_PROBE_INTERFACES',true)
  define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
  FEATURE(`smrsh',`/usr/sbin/smrsh')
  FEATURE(`mailertable',`hash -o /etc/mail/mailertable')
  FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')
  FEATURE(redirect)
  FEATURE(always_add_domain)
  FEATURE(use_cw_file)
  FEATURE(local_procmail)
  MAILER(smtp)
  MAILER(procmail)
  FEATURE(`access_db')
  FEATURE(`blacklist_recipients')
  dnl We strongly recommend to comment this one out if you want to protect
  dnl yourself from spam. However, the laptop and users on computers that do
  dnl not hav 24x7 DNS do need this.
  FEATURE(`accept_unresolvable_domains')
  dnl FEATURE(`relay_based_on_MX')
  而后运行:
  [root@email cf]# sh Build config.cf
  该命令将在该目录下生成config.cf文件。而后安装sendmail:
  [root@email sendmail]# sh Build install
  将config.cf拷贝到/etc/mail目录下,并更名为sendmail.cf:
  [root@email mail]#cp /usr/src/sendmail-8.11.4/cf/cf/config.cf /etc/mail/sendmail.cf
  在/etc/mail目录下建立access文件,内容以下:
  127.0.0.1 RELAY
  202.99.11 RELAY
  这里表示容许本机和202.99.11.0网段中的机器经过该邮件服务器的转发邮件。其中202.99.11应该是你拥有的局域网络IP网段的IP地址,只须要写网络部分便可。好比说你的用户有多个网段,只须要在其中设置多个网段便可:
  127.0.0.1 RELAY
  202.99.11 RELAY
  200.200.201 RELAY
  而后对access文件生成易于检索的库文件格式:
  [root@email mail]# makemap hash access.db < access
  建立文件/etc/mail/local-host-names,其内容为本机的拥有的域名信息,由于在上面的DNS配置文件中该服务器有一个域名:email.linuxaid.com.cn,而且MX记录也指向该域名,所以该服务器就有两个域名,一个为email.linuxaid.com.cn及linuxaid.com.cn,这样用户才可使用[email]someone@linuxaid.com.cn[/email].这样的地址收发邮件,故该文件应该包含入下内容:
  linuxaid.com.cn.
  mail.linuxaid.com.cn.
  最后还要建立别名数据库。在/etc/mail/aliases目录下建立文件aliases,内容以下:
  MAILER-DAEMON: postmaster
  postmaster: root
  bin: root
  daemon: root
  nobody: root
  而后生成aliases库:
  [root@email mail]# newaliases
  而后,就能够启动Sendmail了:
  [root@email mail]# /usr/sbin/sendmail -bd -q20m
  在第一次启动时可能出现以下的错误信息:
  554 5.0.0 /etc/mail/sendmail.cf: line 41: unknown configuration line ""
  554 5.0.0 /etc/mail/sendmail.cf: line 60: unknown configuration line ""
  没关系张,只须要使用vi编辑器将这些行删除便可,其实4一、60等行都是空白行而已。删除之后再从新启动就应该没有问题了。

编辑本段【qpopper的安装配置】

  qpopper是Unix/Linux环境下的 pop3服务器,该软件配合sendmail使用。其主要是实现支持用户经过pop3接收信件。
  建立从/usr/mail指向/var/spool/mail/的连接:
  [root@email src]# ln -s /var/spool/mail/ /usr/mail
  解压qpopper软件包:
  [root@email src]# tar xvfz qpopper4.0.3.tar.gz
  [root@email src]# cd qpopper4.0.3
  编译安装qpopper:
  [root@email qpopper4.0.3]# ./configure
  [root@email qpopper4.0.3]# make
  [root@email qpopper4.0.3]# make install
  安装成功之后,qpopper将会被安装在目录/usr/local/sbin/目录下。设置inetd启动qpopper。编辑/etc/inetd.conf,查找pop内容的一行,在其前面添加#号,而后在改行后面添加入下内容:
  pop-3 stream tcp nowait root /usr/local/sbin/popper qpopper -s
  而后查找inetd进程ID号:
  [root@email qpopper4.0.3]# ps ax|grep inetd
  336 ? S 0:00 inetd
  16872 pts/0 S 0:00 grep inetd
  找到inetd进程号为226。而后从新启动inetd进程,从新读取配置文件:
  [root@www qpopper4.0.3]# kill -HUP 336
  这时候查看系统服务端口号:
  [root@email qpopper4.0.3]# netstat -ln|grep 110
  tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
  则说明110端口已经开始正常服务。

编辑本段【IMAP服务器安装测试】

  实现对 IMAP的支持很是简单,只须要安装IMAP软件包的RPM包:
  [root@email RPM]# rpm -ivh imap-4.7-5.i386.rpm (这里是在6.2环境下,若是在7.x环境下须要安装更高版本的imap)
  而后确保/etc/inetd.conf文件中imap所在行以下所示:
  imap stream tcp nowait root /usr/sbin/tcpd imapd
  而后从新启动inetd以更新配置:
  [root@email /]# kill -HUP 379 (这里379是inetd的进程号)
  而后查看imap是否成功启动:
  [root@email /]# netstat -ln|grep 143
  注:对于6.2版本的imap-4.7来讲 支持imap2,因此是143端口。RH7.x的imap-2000会支持imap3,所以可能还会监听220端口)
  这时候就能够在outlook express中添加帐号进行测试了。

编辑本段【sendmail测试】

  接下来是测试邮件服务器的邮件发送/接收功能,注意:测试时,不要在只对本地用户进行测试,如:你的域为abc.com,测试时,不要只在邮件服务器上经过mail、elm等程序测试[email]user1@abc.com[/email]用户。由于,此时user1是本地用户,因此邮件服务器能够对其进行Relay。你应该从局域网上的另外一台机器使用Outlook等邮件客户端对服务器进行收发测试。
  这种配置对于IP固定用户没有问题,只须要在access文件中指定其固定IP便可,而对于须要支持流动用户,如拨号用户的应用则不大适合,由于若是彻底打开RELAY功能可能致使邮件服务器的称为垃圾邮件的转发站。
  解决用户IP不固定问题有两种方案,一种为采用SMTP认证,即用户发送邮件之前,邮件服务器进行用户身份认证,经过则服务器为其发送邮件,不然拒绝发信;第二种方案是采用动态转发受权控制(Dynamic Relay authorization control),其工做原理为:拨号用户拨号上网后,首先收邮件,若是用户能正确收邮件,则DRAC自动在access.db中加入刚才收邮件用户的IP,并容许此IP能够发信。不过,30分钟内,此IP不发/收邮件的话,DRAC将从access.db中删除此IP。此种机制保证拨号用户在没有SMTP认证的状况下,也能够经过远程邮件服务器发送E-mail。 这些技术将在之后的文章内讨论。

编辑本段【sendmail的安全】

  sendmail是在Unix环境下使用最普遍的实现邮件发送/接受的邮件传输代理程序。 因为sendmail邮件服务器的特色是功能强大而复杂,所以为保证Sendmail的安全性,须要做如下一些工做。
    一、设置Sendmail使用"smrsh"
  smrsh程序的目的是做为在mailer中为sendmail定义的"/bin/sh"的替代shell。smrsh是一种受限shell工具,它经过"/etc/smrsh"目录来明确指定可执行文件的列表。简而言之smrsh限制了***者能够执行的程序集。当它与sendmail程序一块儿使用的时候,smrsh有效的将sendmail能够执行的程序的范围限制在smrsh目录之下。
  第一步:
  决定smrsh能够容许sendmail运行的命令列表。缺省状况下应当包含如下命令,但不局限于这些命令:
  "/bin/mail" (若是在你的系统中安装了的话)
  "/usr/bin/procmail" (若是在你的系统中安装了的话)
  注意:不可在命令列表里包括命令解释程序,例如sh(1),csh(1),perl(1),uudecode(1)及流编辑器sed(1)。
  第二步:
  在"/etc/smrsh"目录中建立容许sendmail运行的程序的符号链接。
  使用如下命令容许mail程序"/bin/mail"运行:
  [root@deep]# cd /etc/smrsh
  [root@deep]# ln -s /bin/mail mail
  用如下命令容许procmail程序"/usr/bin/procmail"运行:
  [root@deep]# cd /etc/smrsh
  [root@deep]# ln -s /usr/bin/procmail procmail
  这将容许位于".forward"和"aliases"中的用户采用"|program"语法来运行mail及procmail程序。
  第三步
  配置sendmail使之使用受限shell。mailer程序在sendmail的配置文件"/etc/sendmail.cf"中仅有一行。必须修改"sendmail.cf"文件中"Mprog"定义的那一行。将"/bin/sh"替换为"/usr/sbin/smrsh"。
  编辑"sendmail.cf"文件(vi /etc/sendmail.cf)并改动下面这一行:
  例如:
  Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/, T=X-Unix, A=sh -c $u
  应该被改成:
  Mprog, P=/usr/sbin/smrsh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/, T=X-Unix, A=sh -c $u
  如今用如下命令手工重起sendmail进程:
  [root@deep]# /etc/rc.d/init.d/sendmail restart
    二、"/etc/aliases"文件
  若是没有加以正确和严格的管理的话,别名文件被用来获取特权。例如,不少发行版本在别名文件中带有"decode"别名。如今这种状况愈来愈少了。
  这样作的目的是为用户提供一个经过mail传输二进制文件的方便的方式。在邮件的发送地,用户把二进制文件用"uuencode"转换成ASCII格式,并把结果邮递给接收地"decode"别名。那个别名经过管道把邮件消息发送到"/usr/bin/uuencode"程序,由这个程序来完成从ASCII转回到原始的二进制文件的工做。
  删除"decode"别名。相似的,对于全部用于执行没有被放在smrsh目录下的程序的别名,你都要仔细的检查,可能它们都值得怀疑并应当删除它们。要想使你的改变生效,须要运行:
  [root@deep]# /usr/bin/newaliases
  编辑别名文件(vi /etc/aliases)并删除如下各行:
  # Basic system aliases -- these MUST be present.
  MAILER-DAEMON: postmaster
  postmaster: root
  # General redirections for pseudo accounts.
  bin: root
  daemon: root
  games: root?? 删除这一行
  ingres: root ?? 删除这一行
  nobody: root
  system: root ?? 删除这一行
  toor: root?? 删除这一行
  uucp: root ?? 删除这一行
  # Well-known aliases.
  manager: root ?? 删除这一行
  dumper: root ?? 删除这一行
  operator: root ?? 删除这一行
  # trap decode to catch security attacks
  decode: root ?? 删除这一行
  # Person who should get root's mail
  #root: marc
  最后应该运行"/usr/bin/newaliases"程序使改动生效
    三、避免你的Sendmail被未受权的用户滥用
  最新版本的Sendmail (8.9.3)加入了很强的防止欺骗的特性。它们能够防止你的邮件服务器被未受权的用户滥用。编辑你的"/etc/sendmail.cf"文件,修改一下这个配置文件,使你的邮件服务器可以挡住欺骗邮件。
  编辑"sendmail.cf"文件(vi /etc/sendmail.cf)并更改下面一行:
  O PrivacyOptions=authwarnings
  改成:
  O PrivacyOptions=authwarnings,noexpn,novrfy
  设置"noexpn"使sendmail禁止全部SMTP的"EXPN"命令,它也使sendmail拒绝全部SMTP的"VERB"命令。设置"novrfy"使sendmail禁止全部SMTP的"VRFY "命令。这种更改能够防止欺骗者使用"EXPN"和"VRFY"命令,而这些命令偏偏被那些不守规矩的人所滥用。
    四、SMTP的问候信息
  当 sendmail接受一个SMTP链接的时候,它会向那台机器发送一个问候信息,这些信息做为本台主机的标识,并且它所作的第一件事就是告诉对方它已经准备好了。
  编辑"sendmail.cf"文件(vi /etc/sendmail.cf)并更改下面一行:
  O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
  改成:
  O SmtpGreetingMessage=$j Sendmail $v/$Z; $b NO UCE C=xx L=xx
  如今手工重起一下sendmail进程,使刚才所作的更改生效:
  [root@deep]# /etc/rc.d/init.d/sendmail restart
  以上的更改将影响到Sendmail在接收一个链接时所显示的标志信息。你应该把"`C=xx L=xx"条目中的"xx"换成你所在的国家和地区代码。后面的更改其实不会影响任何东西。但这是"news.admin.net-abuse.email"新闻组的伙伴们推荐的合法作法。
    五、限制能够审核邮件队列内容的人员
  一般状况下,任何人均可以使用"mailq"命令来查看邮件队列的内容。为了限制能够审核邮件队列内容的人员,只须要在"/etc/sendmail.cf"文件中指定"restrictmailq"选项便可。在这种状况下,sendmail只容许与这个队列所在目录的组属主相同的用户能够查看它的内容。这将容许权限为0700的邮件队列目录被彻底保护起来,而咱们限定的合法用户仍然能够看到它的内容。
  编辑"sendmail.cf"文件(vi /etc/sendmail.cf)并更改下面一行:
  O PrivacyOptions=authwarnings,noexpn,novrfy
  改成:
  O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq
  如今咱们更改邮件队列目录的权限使它被彻底保护起来:
  [root@deep]# chmod 0700 /var/spool/mqueue
  注意:咱们已经在sendmail.cf中的"PrivacyOptions="行中添加了"noexpn"和"novrfy"选项,如今在这一行中咱们接着添加"restrictmailq"选项。
  任何一个没有特权的用户若是试图查看邮件队列的内容会收到下面的信息:
  $ /usr/bin/mailq
  You are not permitted to see the queue
   六、限制处理邮件队列的权限为"root"
  
 
  一般,任何人均可以使用"-q"开关来处理邮件队列,为限制只容许root处理邮件队列,须要在"/etc/sendmail.cf"文件中指定"restrictqrun"。
  编辑"sendmail.cf"文件(vi /etc/sendmail.cf)并更改下面一行:
  O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq
  改成:
  O PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq,restrictqrun
  任何一个没有特权的用户若是试图处理邮件队列的内容会收到下面的信息:
  $ /usr/sbin/sendmail -q
  You do not have permission to process the queue
    七、在重要的sendmail文件上设置不可更改位
  能够经过使用"chattr"命令而使重要的sendmail文件不会被擅自更改,能够提升系统的安全性。具备"+i"属性的文件不能被修改:它不能被删除和更名,不能建立到这个文件的连接,不能向这个文件写入数据。只有超级用户才能设置和清除这个属性。
  为"sendmail.cf"文件设置不可更改位:
  [root@deep]# chattr +i /etc/sendmail.cf
  为"sendmail.cw"文件设置不可更改位:
  [root@deep]# chattr +i /etc/sendmail.cw
  为"sendmail.mc"文件设置不可更改位:
  [root@deep]# chattr +i /etc/sendmail.mc
  为"null.mc"文件设置不可更改位:
  [root@deep]# chattr +i /etc/null.mc
  为"aliases"文件设置不可更改位:

编辑本段【使用RPM 安装sendmail】

  若是您是使用 Red Hat 7.3 之前的版本,例如 Red Hat 7.1, 7.2, 7.3 ,或者是 Open Linux Server 3.1.1 的话,那么请先肯定一下底下的套件是否已经安装上去了呢?
  [root@test root]# rpm -qa | grep sendmail
  sendmail-cf-8.11.6-3
  sendmail-8.11.6-3
  # 如有属性相依的问题时,请将您的原版安装光盘拿出来, mount 上去后,
  # 仔细的,一个一个的将相依的套件安装上去啰! ^_^
  [root@test root]# rpm -qa | grep m4
  m4-1.4.1-5
  [root@test root]# rpm -q mailx
  mailx-8.1.1-22
  那个sendmail 就是主要的邮件服务器程序,sendmail-cf 是一些设定档案,这两个套件是『必定』要安装的!至于那个 m4 的套件,则是转换 sendmail 设定文件的一支程序啰!也要安装喔!而那个mailx 就是提供最简单的mail 这支寄信与收信的套件啦!因为个人测试系统是 Red Hat 7.2 ,因此使用的算是比较旧一点点的 sendmail 8.11.6 版,若是您想要换装新版的 sendmail 8.12.xx 的话,

编辑本段【sendmail疑难解答】

    一、sendmail如何设置虚拟域?
  如同Apache同样,sendmail也容许使用虚拟主机功能,这是经过在mc文件中FEATURE(virtusertable)功能实现的,而虚拟主机的文件缺省是/etc/mail/virtusertable.db,它用/etc/mail/virtusertable文件生成,这个文件的形式相似于aliases文件,即左地址 右地址,中间用Tab键分开。例如:
  [email]someone@linuxaid.net.cn[/email] localuser
  这样一行意味着原本应该发送给[email]someone@otherdomain.com[/email]的邮件如今要发送给本机的用户localuser。固然,这意味着:第一,你的DNS记录中,本机应该是otherdomain.com的MX交换器;第二,你的本机sendmail.cw文件或local-host-names应该包含otherdomain.com这个名字。
  固然纯粹的这样的域意义不大,可是sendmail还支持邮件虚拟域的参数翻译。例如:
  @testdomain.com [email]test@linuxaid.com.cn[/email]
  意味着全部发往xxx@testdomain的邮件都会被发送到[email]test@linuxaid.com.cn[/email] 。而
  @testdomain.com %[email]1test@linuxaid.com.cn[/email]
  则表明参数转义,例如[email]user1@testdomain.com[/email]的邮件被发送到[email]user1test@linuxaid.com.cn[/email] ,
  [email]user2@testdomain.com[/email]被发送到[email]user2test@linuxaid.com.cn[/email] 。一样,这样的功能也要经过MX记录和CW文件加上去。
  创建virtusertable的方法与创建access的办法是同样的:
  makemap hash virtusertable.db < virtusertable
  而后从新启动sendmail。
    二、如何设定用户别名?
  用户的别名是由文件/etc/mail/aliases来设定的。最简单的状况是须要做信件分发的状况。例如,通常状况下,电子邮件出现问题的时候,咱们须要把出错的邮件头发送到本机的postmaster用户,可是也许你的系统上有多个系统管理员,所以每一个人都须要获得一份这个邮件头的拷贝。这种状况下就须要使用用户别名文件了。
  aliases文件的格式是 邮件别名:实际用户名,若是一个别名有多个用户就用逗号分开,每一个别名一行。例如,要把发给postmaster的信件发送给supervisor和manager,须要写上这样一行:
  postmaster:supervisor,manager
  别名还能够用在这样的状况,即定义自动的邮件转发。例如,某个用户之前在你的系统上接受电子邮件,如今他有了一个新的电子邮件,但愿发到你的机器上的邮件自动被转发到他新的电子邮件地址上,那么,可使用相似这样的别名方式:(假设你的机器是[email]joe@linuxaid.com.cn[/email])
  joe:joe@xxxxx.com
  之后发给[email]joe@linuxaid.com.cn[/email]的电子邮件就自动中转到[email]joe@newaddr.com[/email]。注意左边自动加上你的机器名字,因此左边只能是帐号名字,不能是全限定邮件地址。
  另外一个经常使用的办法是重定向。若是你在模板文件中定义了REDIRECT特性,那么可使用这个功能。例如,某我的在你的机器上开了一个帐户user1,后来迁移到[email]user2@server2.com[/email]。那么,你能够将其别名写成
  user1: [email]user2@server2.com.REDI[/email]RECT
  之后当有人向这个地址发信的时候,你的sendmail会将其退回,而且返回一个551 User not local; please try [email]user2@server2.com[/email]的信息。
  在使用别名的时候,必须注意的是不要形成循环,例如user1转发给user2,user2又将其转发给user1....如此循环。在这种状况下,转发17次后,sendmail将把它退还给发信人。最多见的错误发生在你试图在转发邮件的同时在本地保留备份的状况下,例如:
  user1: user1,user2
  就构成了一个循环。
  要在本地保留备份,使用转义符号,例如
  user1: user1,user2
  创建了别名文件以后,须要将其初始化,这能够经过newaliases命令完成:
  [root@mail mail]# newaliases
  /etc/aliases: 17 aliases, longest 31 bytes, 241 bytes total
  也可使用sendmail -bi命令:
  [root@mail mail]# sendmail -bi
  /etc/aliases: 17 aliases, longest 31 bytes, 241 bytes total
  两种方式实际是彻底同样的。
  相似于经过aliases文件进行邮件转发,用户也可使用本身的转发文件,例如,某个用户user1想让发送给本身的邮件所有转发到[email]xxxxx@xxxxxx.com[/email],可是又不但愿创建全局的用户别名,那么能够在本身的宿主目录下面创建一个.forward文件,内容只要一行:
  [email]xxxxxx@xxxxx.com[/email]
  就能够了。 这种技术可让每一个用户本身管理本身的邮件别名。

编辑本段【sendmail使用技巧】

   一、为何不能配置邮件服务器为open relay的? 
  
 
  若是系统管理员将本身的邮件服务器设置为open relay,将会致使一些垃圾邮件发送者将你的邮件服务器做为转发自圾邮件的中继站,这将使垃圾邮件的接收者将矛头对准你,可能会致使报复性的邮件×××;垃圾邮件还能消耗你大量的资源,占用你的带宽。更为糟糕的事情多是你的名字可能会上了黑名单,成为其余邮件接收者共同抵制的目标,你的邮件将被这些接收者所拒绝。
    二、什么是邮件转发(mail relay)
  设置好一个email服务器之后,该服务器将具备一个或若干个域名,这时email服务器将监听25号端口,等待远程的发送邮件的请求。网络上其余的mail服务器或者请求发送邮件的MUA(Mail User Agent,如outlook express、foxmail等等)会链接email服务器的25号端口,请求发送邮件,SMTP会话过程通常是从远程标识本身的身份开始,过程以下:
  HELO remote.system.domainname
  250 qmailserver.domain
  MAIL FROM:[email]user@somewherer.net[/email]
  250 OK
  RCPT TO: [email]user1@elsewhere.net[/email]
  邮件的接收者[email]user1@elsewhere.net[/email]中的域名并不必定是本地域名,这时候本地系统可能有两种回答,接受它:
  250 OK
  或者拒绝接受它:
  553 sorry,.that domain isnot in my domain list of allowed recphosts
  第一种状况下,本地email服务器是容许relay的,它接收并赞成传递一个目的地址不属于本地域名的邮件;而第二种状况则不接收非本地邮件。
  email通常都有一个配置文件,其决定了是否接受一个邮件。只有当一个RCPT TO命令中的接收者地址的域名存在于该文件中时,才接受该邮件,不然就拒绝该邮件。若该文件不存在,则全部的邮件将被接受。当一个邮件服务器无论邮件接收者和邮件接收者是谁,而是对全部邮件进行转发(relay),则该邮件服务器就被称为开放转发(open relay)的。当email服务器没有设置转发限制时,其是开放转发的。
    三、sendmail如何限制邮件转发   由于Send Mail 为了怕变成广告信转信站因此安装后只线本机上的 使用者寄信,要让它为你转信须要修改一点东西。 修改 /etc/mail/access 档案在里面增长下面几行。   localhost RELAY   192.168.1 RELAY   就能够将 192.168.1 网域里的信转出去了。
相关文章
相关标签/搜索