用Linux作邮件服务器(2)
来源:中国站长站 发布时间:2008-07-28 17:30:00
如果somedomain.gov的SMTP客户程序连接到。otherdomain.com邮件发送器来投递zeng的副本,当它准备列出收件人(信封地址)时,它该怎么处理呢?如果像上面To:行(邮件头地址)那样列出两个收件人,li将收到信件的两个副本,因为otherdomain.com的邮件发送器将向somedomain.gov转发一个副本。解决这一问题的方法是:somedomain.gov的SMTP客户程序把信件放在一个信封里,在此信封只包含一个主机上的收件人姓名,虽然所有收件人的名单仍然在信件的头部,但他们在信封之内,因此位于somedomain.gov和otherdomain.com处的SMTP服务程序也就看不到他们。在本例中,寄往otherdomain.com的信封将只列出zeng,寄往somedomain.gov的信封将只列出li。
别名是说明邮件头和信封地址不同的另一个例子。假定要把邮件发送到别名为friends的人,friends包括的人名是Xie、zhang、li和qiu。在信中,用户写的是To:friends,然而。sendmail将扩展这一别名并构造一个包含所有收件人的信封。根据这些名字是否是别名,是否有可能在其他主机上,最初的消息将被装进四个不同的信封并投递到四个不同的主机。在每个信封上将只包含一个收件人的姓名,但在信头中包含的却是同一个别名friends。
sendmail允许在命令行中指定收件人,假定有个名为letter的文件,其内容如下:
To:null recipient〈 〉
Subject:To show the differebce between in header and envelope addresses
This is just a test for E-mail.
利用下面的命令发送这一信件:
$sendmail yourlogin〈letter
即使用户的注册名没有在信件的头部,用户(yourlogin)也将会收到这一信件。因为用户的地址在信封上。除非以别的方式(例如利用-t标志)说明,否则sendmail将根据命令行上指定的收件人构造信封地址,而且邮件头地址和信封地址并不一定要相同。
2.2 sendmail的安装与配置
首先,必须获取sendmail源代码并进行编译。接着,必须选择同用户的站点需求相接近的sendmail.cf文件并对它进行必要的修改。然后,测试sendmail和它的配置文件。最后,必须安装sendmail、sendmail.cf以及其他辅助文件。
上面所述的是基本步骤。但根据sendmail安装位置的不同,可能还需要修改系统登录脚本(/etc/init.d中的一个文件),从而使sendmail在系统引导下能够被正确地启动。此外,如果系统没有别名文件,还必须创建一个,别名文件通常被命名为/usr/lib/aliases或/etc/mail/aliases(别名文件的位置将在sendmail.cf中用到,因此可以把它放在用户想放的任何地方)。需要注意的是,可能还需要对系统的DNS数据库进行修改。
1.获取源代码
RedHat 6.1配备的是sendmail-8.9.3,从www.redhat.com站点上可以得到sendmail-8.9.3的RPM版本。sendmail的这一版本可以从http://www.sendmail.org站点得到,或者通过FTP从ftp://ftp.sendmail.org得到。
注意:下载文件的确切名字依据V8 sendmail当前版本的不同而不同,当前的最新是版本8.9.3。另外,由于文件是被打包压缩的,因此在传输它们之前必须为FTP提供binary命令,即以二进制方式传输。还注意,应该使用自己完整的E-mail地址作为口令,例如username@somedomain.gov。
2.解压源、解包并编译sendmail
在获得了源代码后,必须把它打开。由于它是一个被压缩的tar映像文件,因此必须对它进行解压,然后从tar档案中抽取各个文件。假定文件存放在目录/usr/local/src下面。
[root@lll src]# gzip -d sendmail-8.9.3.tar.gz
[root@lll src]# tar -xvf sendmail-8.9.3.tar
执行上述操作后,将产生子目录sendmail-8.9.3。接下来,运行cd和Is,查看这一源代码 目录中有哪些文件:
[root@lll src]# cd sendmail-8.9.3/stc。
[root@lll src]# ls
Makefile collect.c macro.c parseaddr.c srvrsmtp.c
Makefiles conf.c mailp.0 pathnames.h stab.c
READ_ME conf.h mailp.1 queue.c stats.c
TRACEFLAGS convtime.c mailstats.h redcf.c sysexits.c
alias.c daemon.c main.c recipient.c sysexits.h
aliases deliver.c makesendmail safefile.c trace.c
aliases.0 domain.c map.c savemail.c udb.c
aliases.5 envelope.c mci.c sendmail.0 useful.h
arpadate.c err.c mime.c sendmail.8 usersmtp.c
cdefs.h headers.c newaliases.0 sendmail.h util.c
clock.c ldap_map.h newaliases.1 sendmail.hf version.c
现在可以准备编译sendmail了,但首先要阅读下面的文件,这些文件包含关于用户所下载的sendmail版本的最新消息。
FAQ
RELEASE-NOTES
KNOWNBUGS
READ_ME
另外,还要注意doc/op子目录中的sendmail安装与操作指南(SIOG)。
sendmail的安装过程非常简单。要编译新的sendmail版本,运行下面的命令即可。
[root@lll src]# makesendmail
在RedHat 6.x的2.2内核上,sendmail在编译时不会出现任何警告或错误。如果使用光盘上的RPM软件包文件,安装更简单。仅需执行下面的命令:
[root@lll src]# rpm-ivh sendmail-8_9_3.rpm
在安装新的sendmail时,一定要为被替换的所有文件创建一个备份,特别是原来的sendmail守护程序。如果新的sendmail不能正常工作,在排除新版本的故障时,将需要恢复原来的版本。
要安装新版本的sendmail,首先利用下面的命令停止当前运行的守护进程:
[root@lll src]#/etc/rc.d/init.d/sendmail.init stop
然后把新的二进制文件拷贝到sendmail的正确位置:
[root@lll src]# cp obj.Linux*/sendmail/usr/sbin/sendmail
另外,还必须把新的手册页文件拷贝到正确位置:
[root@lll src]# cp aliases.1/usr/man/man5/aliases.5
[root@lll src]# cp mailq.0/usr/man/man1/mailq.1
[root@lll src]# cp newaliases.0/usr/man/man1/newaliases.1
[root@lll src]# cp sendmail.0/usr/man/man8/sendmail.8
现在可以利用下面的命令重新启动新的sendmail守护进程:
[root@lll src]# /etc/rc.d/init.d/sendmail/init start
3.sendmail的别名文件
sendmail依靠许多辅助文件来执行它的工作。最重要的文件是别名文件和配置文件Sendmail.cf。如果打算把sendmail作为SMTP服务程序运行(大多数站点都这么做),则应该安装SMTP的帮助文件sendmail.hf。这就是关于文件sendmail.st和sendmail.hf所需说明的内容。其他辅助文件包含在sendmail的安装和操作指南(Sendmail Internet and Operating Guide,简称SIOG)中。
sendmail会检查收件人的地址是否为别名。例如,大部分Internet站点都设有一管理员地址Webmaster,遇到问题可以向他报告。然而大多数站点并没有这一名字的实际账号,而是把Webmaster的邮件转移到负责邮件管理的一个或几个人。例如,在假设的站点somedomain.gov上,用户zhang和li共同负责网站管理,因此别名文件会具有下面一项内容:
Webmaster:zhang,li
这行代码告诉sendmail,寄向Webmaster的邮件将被改寄到用户名为zhang和li处。事实上,这些名字还可以是别名,例如:
Webmaster:firstgroup,secondgroup,thirdgroup
firstgroup:zhang,li
secondgroup:liu,deng
thirdgroup:qiu,wang
在所有这些例子中,别名的名字在冒号的左边,这些名字所代替的真实名字在冒号的右边。sendmail将反复地分析别名直到他们被解析为一个真正的用户或一个远程地址为止。在前面的例子中,要解析别名Webrmaster,sendmail首先把它扩展为收件人名单firstgroup、secondgroup和thirdgroup。然后进一步扩展这些别名中的每一个,从而得到最终的名单——zhang、li、liu、deng、qiu和wang。
需要指出的是,别名的右边可以指定为一个远程主机,但左边却不能。别名zhang:zhang@otherdomain.com是合法的,而zhang@otherdomain.gov@otherdomain.com是不合法的。


猜你喜欢
- 一、安装Docker1、安装依赖。yum -y install yum-utils device-mapper-persistent-dat
- 11月12日消息,据国外媒体报道,美国消费电子产品协会(以下简称“CEA”) 周二宣布,高通CEO保
- 1、安装前的准备 安装插件前, 您必须要看看您所要安装的插件的运行平台是否是您当前安装的
- B2C模式是中国服装企业转型和升级的拐点­­­ ------作者:赵浩然 现任浙江中搜在线技
- 1、按照向导创建虚拟机以下是安装虚拟机的步骤,没有写的直接下一步【1】主页-创建新虚拟机【2】选择 自定义(高级)【3】选择稍后安装操作系统
- “如果不刷信用,谁会来买你的东西?”“当然选刷。”网店信用作
- 需要安装apache,php,mariadb安装Apacheyum install -y httpdapache启动并设置开机自启syste
- 近日研究Google Adsense,终于知道了一条赚钱规则,按这个规则,应该可以优化Adsense提高收入了吧。这条规则其实非常的简单就是
- prefork几乎还是目前的唯一MPM,我在下面主要还是讨论它的工作原理和相关指令调整。查看缺省生成的httpd.conf配置文件,会发现里
- 日前,据媒体报道,国产服务器领军企业——浪潮服务器在2007年上半年取得了重大销售突破,已经连续两个
- 1. 现象描述原来使用一个 CentOS 虚拟机,这里叫 CentOS_1。网络配置如下:VMWare软件设置 NAT 模式,虚拟机配置 D
- FTP的全称是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。而FTP服务器,则是在互联
- 对于很多WordPress新手来说,不懂任何代码的情况下去瞎改WordPress主题,得出的效果往往会出现语法错误之类的东西或效果不尽人意。
- 博客已成为很多站长的首选,它可以聚集一群有着共同好的朋友,而且,还不用像网站那样的费神。wordpress是目前比较流行的博客系统之一,wo
- 照着GUN/Linux编程指南中的一个例子输入编译,结果出现如下错误:undefined reference to 'pthread
- 1 安装包准备VMware-player-15.0.4-12990004, 免费版本,用于非商业、个人和家用目的CentOS-7-x86_6
- 前言通过 Linux 上的日历,不仅仅可以提醒你今天是星期几。诸如 date、cal、 ncal 和 calendar 等命令可以提供很多有
- 你是否遭遇过这样的情况?当你在浏览器中输入正确的URL地址,但是打开的并不是你想要去的网站。它可能是114的查询页面,可能是一个广告页面,更
- 前言最近工作中在做线上服务器,安装centos7.2 x64最小化安装,需要做链路聚合,双网卡绑定。在centos 6.x 和 centos
- baidu好象最近又在跳舞了,动作之大,动作之频繁,可以说是史无前例。我新上的站,第一天25页,第二天70页,第三天1页,另外一个站第一天2