如何在Linux下安装Sendmail服务器软件的方法

如何在Linux下安装Sendmail服务器软件的方法,第1张

1、从wwwsendmailorg下载最新的版本(这个snedmail倒是有必要升级为最新的版本,因为它的升级主要是安全漏洞问题)。这里说明的是用的sendmail-8122targz

  2、cd /usr/local/src/

  3、把文件下载到:/usr/local/src中

  4、tar zxvf sendmail-8122targz

  5、cd /usr/local/src/sendmail-8122

  6、chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

  7、chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

  8、cd /usr/local/src/sendmail-8122/sendmail

  9、sh Build

  10、cd /usr/local/src/sendmail-8122/cf/cf

  11、建立文件sendmailmc内容如下,你可根据需要修改相应部分。

  divert(-1)

  dnl This is the macro config file used to generate the /etc/sendmailcf

  dnl file If you modify thei file you will have to regenerate the

  dnl /etc/sendmailcf by running this macro config through the m4

  dnl preprocessor:

  dnl m4 /etc/sendmailmc > /etc/sendmailcf

  dnl You will need to have the Sendmail-cf pacage installed for this to work

  include(`/usr/local/src/sendmail-8122/cf')

  define(`confDEF_USER_ID',`8:12')

  OSTYPE(`linux')

  undefine(`UUCP_RELAY')

  undefine(`BITNET_RELAY')

  define(`confTO_CONNECT', `1m')

  define(`confTRY_NULL_MX_LIST',true)

  define(`confDONT_PROBE_INTERFACES',true)

  define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')

  define(`SMART_HOST',compaqrdxxxcom)

  <---这条用于(非HUB)缺省使用HUB发送邮件

  MASQUERADE_AS(`rdxxxcom')

  <-------------------------

  FEATURE(`masquerade_entire_domain')

  <---这三条用于邮件地址伪装

  FEATURE(`masquerade_envelope')

  <-------------------------

  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)

  FEATURE(`access_db')

  FEATURE(`blacklist_recipients')

  FEATURE(`accept_unresolvable_domains')

  MAILER(smtp)

  MAILER(procmail)

  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

  dnl FEATURE(`relay_based_on_MX')

  12、sh Build install-cf

  13、groupadd smmsp

  14、useradd smmsp

  15、cd cd /usr/local/src/sendmail-8122/sendmail

  16、sh Build install

  17、cd /usr/local/src/sendmail-8122/makemap

  18、sh Build clean

  19、sh Build all

  20、sh Build install

  21、cd /usr/local/src/sendmail-8122/

  22、在本域DNS主数据库文件中增加MX纪录:

  rdxxxcom IN MX 0 compaq

  注意修改相应部分。那个0是有几个邮件集中器的时候用于标记先后顺序的。当有好几个MX的时候,建议顺序写为10、20、30…

  23、在/etc/mail目录下创建access文件,内容类似如下:

  127001 RELAY

  21922 RELAY

  21199221238 RELAY

  然后:makemap hash accessdb < access

  24、创建文件/etc/mail/local-host-names,其内容为本机的拥有的域名信息。

  rdxxxcom

  compaqrdxxxcom

  25、创建文件/etc/mail/aliases,内容类似:

  MAILER-DAEMON: postmaster

  postmaster: root

  bin: root

  daemon: root

  nobody: root

  运行newaliases创建数据库。

  创建别名文件的意义之一在于当邮件发往域中其他邮件服务器用户而不是mail HUB用户的时候用。

  比如增加一条:

  atan: atan@fbsd

  则导致邮件发往mail HUB的时候自动转发到atan@fbsdrdxxxcom

  26、启动sendmail: /usr/sbin/sendmail -bd -q30m

  排错:如果有问题导致启动不了,大部分问题和DNS配置有关,可以使用nslookup检查DNS是否正常。挨个检查/etc/mail中的文件内容也是排错的好办法。另外,修改配置,不建议直接编辑sendmailcf文件,建议使用m4宏编译工具,因为有些带有安全漏洞或过时的宏在编译的时候会有提示,这样以免造成相关安全问题。

效果截图

Sendmail :sendmail 是最古老的 MTA(Mail Transfer Agent,电子邮件系统)之一,最早它诞生的时候,Internet 还没有被标准化,当时主机之间使用的是 UUCP 技术来交换邮件。它被设计得比较灵活,便于配置和运行于各种类型的机器。

Qmail :qmail 是新生一代的 MTA 代表,它以速度快、体积小、易配置安装等特性而著称。作者 DJBernstein 是一个数学教授,富有传奇色彩。他于 1995 年开发 qmail,1996 年发布 070 版,并使用了多种当时比较先进的 技术,包括 Maildir,与 sendmail 单个 binary 不同的模块化设计,权限分离,以及使用了大量由他编写的配套工具,如 daemontool,ucsip-tcp 等。qmai迅速成为了 Internet 上最有名的  MTA,使用者众。

postfix :postfix如今已经独树一帜,流水线、模块化的设计,兼顾了效率和功能。灵活的配置和扩展,使得配置 postfix 变得富有趣味。其主要的特点是速度快、稳定,而且配置/功能非常强大,并和 sendmail 类似,提供了与外部程序对接的 API/protocol。尤其是配置部分,postfix 另一个优势是至今依然保持活跃的开发工作,而且稳步发展,适合高流量大负载的系统,扩充能力较强。本实验也是基于 postfix 服务器软件来实现。

邮件服务器基本的工作原理

MUA(Mail User Agent):向外发送邮件,以及提供用户浏览与编写邮件的功能。

MTA(Mail Transfer Agent):(可以理解为 smtpd 服务器)帮忙将用户的邮件传递出去或接收进来。

MDA(Mail Delivery Agent):将接收下来的邮件存放到对应用户邮筒当中的程序。通过分析 MTA 所收到邮件的表头或内容,来判断此邮件是属于哪个用户,然后决定将此邮件投递给哪个用户的邮筒里。

MRA(Mail Retrieval Agent):通过 MRA 服务器提供的邮政服务协议(POP)来接收自己的邮件。

邮件中继:

SMTPD 要支持邮件路由功能,需要打开 Open Relay 开放式中继。

SMTPD 是根据收件人判断邮件是否需要中继,而且只给指定的客户端中继。

注:当 DNS 上存在多个 MX 记录的主机这时就是根据 DNS 的邮件级判断了。DNS 上定义的值越小,其优先级越高。辅助交换器接受到邮件并不能保存邮件。而是这个辅助交换器会等到主邮件交换器空闲的时候把代替它接受下来的邮件在转给主邮件交换器。所以任何邮件处理都是主邮件交换器处理的。所以我们实际情况下,如果有 2 台服务器做邮件交换器,性能比较高的应该为主的。

安装配置过程中,postfix 通过 Internet 发送和接收 email,并存储在用户邮箱里。同时客户也可以通过 IMAP 或者 POP3 恢复他们的邮件。其中的客户认证是通过  Courier Authdaemon 模块的。下图表示出了这个过程:

出现安装界面时,首先按下 <tab> 键切换到确定,然后按下回车。

安装 postfix 的时候会问你安装的服务器类型,对于我们的需要,我们选择默认的 Internet Site,这是最符合我们的服务器类型,然后按下回车确认。

使用 vim 编辑配置文件:

大概在第 31 行,编辑 myhostname,修改为 myhostname = shiyanloucom。

然后我们把 alias_map 参数修改为 alias_maps = hash:/etc/postfix/virtual,之后会讲解 virtual 里面填写什么。

之后设置 mynetworks 段落,它定义可以使用这台服务器的主机,我们这里就用默认的本地地址。你也可设置为其他地址。

编辑完成后按下 Esc 键,输入 :wq 保存退出。

此命令创建了一个用户 master,其中 -d 和 -m 选项用来为登录名 master 产生一个主目录 /usr/master(/usr 为默认的用户主目录所在的父目录)。

我们编写之前设置的  virtual文件,这些邮箱地址是用来传送邮件的。

在这个文件里,我们将设置一个表,对应相关的邮件地址。

完成后保存关闭文件。

我们可以通过调用下面这个命令来实现我们的映射:

接着我们重启 postfix,完成我们的修改:

我们可以用 shiyanlou 这个账号给 master 这个账号发一封邮件。首先我们需要安装一个命令行收发邮件的软件 mailutils 。

写一封邮件

输入如下内容:

其中 -s 参数是指邮件的标题,< 后面是将要发送的邮件内容从 hellotxt 中重定向。这个命令如果正确执行不会有输出。

然后我们切换到 master 用户,查看我们的邮件。

按下回车建可以查看邮件内容,输入 quit 即可退出邮箱。

Linux 邮件服务器原理介绍,编译安装 Postfix 实现本地的邮件服务

Ubuntu 服务器指南-邮件服务-Postfix

how-to-run-your-own-mail-server-with-mail-in-a-box-on-ubuntu-14-04

 通常的做法都是,关闭本机的sendmail服务,修改/etc/mailrc,增加一下类似两行,指定外部的smtp服务器地址、帐号密码等。

  

  # vi /etc/mailrc

  set from=demo@qqcom smtp=smtpqqcom

  set smtp-auth-user=demo smtp-auth-password=ithf smtp-auth=login

  

  然后通过命令来发送邮件

  echo hello word | mail -s "demo title" demo@qqcom

  可是发现在RHEL6运行是没有问题,在RHEL5下,mail命令始终是调用本地的sendmail服务来发送邮件的。到底RHEL6和RHEL5下的mail和mailx又有着什么关系呢?

  

  RHEL6下

  

  mail 链接到 mailx 命令,mailx版本为124

  # rpm -qa|grep mailx

  mailx-124-6el6x86_64

  # ll /bin/mail

  lrwxrwxrwx 1 root root 5 7月 22 2011 /bin/mail -> mailx

  -rwxr-xr-x 1 root root 390424 2月 16 2010 /bin/mailx

  # mail -V

  124 7/29/08

  RHEL5下,则发现了一些不同

  mailx 链接到 mail 命令,mailx版本为81

  # rpm -qa|grep mailx

  mailx-811-4422

  # ll /bin/mail

  -rwxr-xr-x 1 root mail 84856 Jun 6 2007 /bin/mail

  lrwxrwxrwx 1 root root 4 Apr 12 18:03 /bin/mailx -> mail

  # mail -V 此处运行就会出错,没有-V这个参数

  也就是说,在RHEL6\5下,运行mail 和mailx,实际上都是一个命令,而mail版本不同,导致了RHEL5下mail命令无法调用外部SMTP服务器。

关于Linux中sendmail发送失败的一些经验总结

今天在使用Wordpress系统注册用户时,又碰到了一个以前似乎常遇到的问题,不仅在Moodle中遇到过,在其他几个基于Linux运行的软件系统都遇到过。就是注册完成后,查看注册用户的Email时,发现总是收不到确认信。

但是在Moodle中,由于使用了外部的SMTP服务器用来发送邮件, 而Wordpress使用的phpmail,所以当用户系统需要发送邮件时,是先将邮件通过Linux中的sendmail发送出去,这些邮件都可以在/var/log/maillog中查看到。

通过查看,发现所有注册时发送的信息全部被deny了,郁闷啊!:-(

错误信息为Connection refused by [127001],百度了一下,发现国内这些文章几乎没有,在Google中发现,搜索结果达到20多万条,看来是有办法解决了。找了几篇发现都是用户询问ISP服务商关于这个错误的信息,无语…

最终在一篇《Sendmail remote connection refused》的文章中找到了关于解决该问题的办法。

使用telnet测试25端口,发现在使用localhost和本机IP地址的时候都是deny。文章中提到两种解决的方法:

通过修改/etc/mail/sendmailcf中的字段

O DaemonPortOptions=Port=smtp,Addr=127001, Name=MTA

在其前面加入#从而注释该行。

通过修改/etc/mail/sendmailmc中的字段DAEMON_OPTIONS(`Port=smtp,Addr=127001, Name=MTA')为

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127001, Name=MTA’)

使用m4将sendmialmc编译为sendcf,命令如下:

m4 sendmailmc > sendmailcf

接下来重启一下sendmail,也可以使用sendmail -q命令将未发送出去的邮件发送。

当再次查看email时,Everything is ok!

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在Linux下安装Sendmail服务器软件的方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情