在很多的邮件服务器软件中,Sendmail总是能够在每一次评比中取得荣誉,从而使它成为现在运用最为广泛的一种E-mail服务器。可是,说起Sendmail的装备,很多人会感到头痛。长期以来,很多人为此诲人不倦地一遍又一遍地在BBS、新闻组上问询其装备。笔者期望凭借本文对Sendmail的运用作一个力求完美的阐明。
下载及装置
Sendmail的最新版别为:8.11.3,文件巨细为1.2MB。
1.解压缩
# tar -zxvf Sendmail-8.11.3.tar.gz
#cd Sendmail-8.11.3
假如软件包是rpm格局,则解压装置如下:
#rpm -ivh Sendmail-8.11.3-src.rpm
2.编译
# ./Build
假如不出什么问题,编译经过,编译完结后会主动生成目录:obj.Linux.2.2.18.i686(这是笔者的中心称号,或许你的内核称号与此不同)。
3.装置
#./Build install
假如是rpm 格局的软件包,则应编译如下:
# rpm -ba Sendmail-8.11.1.spec
#rpm -ivh Sendmail*.rpm
至此编译、装置完结
装备战略
sendmail.cf是Sendmail的装备文件,它全权决议了Sendmail的特点。这个文件界说邮件服务器为哪个域作业。其间的内容为特定宏,大多数人对它都抱有恐惧心理,由于文件中的宏代码实在是太多。sendmail.cf通常是由一个以mc结束的文件编译发生。如Redhat自带一个redhat.mc,用户能够自己修正其间的一些设置,使之合适自己。笔者的sendmail.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/lib/Sendmail-cf/m4/cf.m4)
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 24×7 DNS do need this.
FEATURE(`accept_unresolvable_domains)
dnl FEATURE(`relay_based_on_MX)
编译sendmail.mc以发生需求的sendmail.cf文件:# m4 /etc/sendmail.mc > /etc/mail/sendmail.cf。
生成sendmail.cf今后,修改sendmail.cf。在文件中,查找DS,在这今后参加邮件服务器名、域名,这样能够确保当你以username@mail.domain.com或username@domain.com发信时,用户都能够收到,如下所示:
# Alias for this host
Cw mail.domain.com domain.com
然后,就能够发动Sendmail了:# /usr/sbin/Sendmail -bd -q20m。
Sendmail 8.9.x今后的版别,在缺省情况下,都默许不对未验证的计算机进行转发(Relay),所以假如要为本机以外的其他计算机进行邮件转发,这时,应该在相应的装备文件中清晰告知Sendmail要对哪几个主机进行转发。假如不考虑验证,对任何主机都进行转发的话,能够在sedmail.mc文件中参加一行:FEATURE(promiscuous_relay)。
不过,假如你的计算机是放在公网上的话,主张你不要这样做,由于这样做了今后,任何人都能够运用你的计算机进行转发邮件了,特别是一些心怀叵测的人或一些兜销客(spammer,垃圾邮件制造者)会运用你的邮件服务器的转发功用乱发很多的垃圾邮件。
运用阐明
通常情况下,Sendmail不会为邮件服务Relay信息,这样能够避免一些有歹意的人运用他人的邮件服务器乱发邮件。缺省情况下,Sendmail封闭了Relay功用。假如你要为其他服务器Relay邮件,能够进行如下设置——在access文件中参加要为其Relay函件的机器,格局为:
hostname RELAY
ipaddress RELAY
假如要为一个域内多个机器Relay函件,则能够在/etc/mail/access文件中直接参加其子网IP或域名,如下所示:
access文件内容:
domainname.com RELAY(答应为域domainname的一切计算机relay邮件)
localhost RELAY
192.168.1.0 RELAY (为192.168.1.0此网内一切机器relay邮件)
此文件专一决议了哪些机器、哪个域能够运用邮件服务器转发邮件。完结后需求进行编译:#makemap hash access.db access。
其他装备的文件联系不是很大,能够暂时运用缺省装置的内容。至此,Sendmail应该能够正常作业了。
接下来是测验邮件服务器的邮件发送功用,留意:测验时,不要只对本地用户进行测验,如:你的域为abc.com,测验时,不要只在邮件服务器上测验user1@abc.com用户。由于,此刻user1是本地用户,所以邮件服务器能够对其进行Relay。你应该从局域网上的另一台机器运用Outlook等邮件客户端对服务器进行测验。
固定IP用户(包含跨国性公司的用户)没有问题,能够在数据库中参加其固定IP。关于常常出差在外的人,不适用。
排错
过错1.在Outlook中正确装备POP及SMTP服务器的地址后,呈现如下过错: