search
HomeBackend DevelopmentPHP Tutorial这个问题不该在这里问哦!看看吧,一段SENDMAIL的配置。不过想要_PHP

Sendmail

Sendmail的配置


  Sendmail对一般的系统管理者而言,往往是个不敢手的「禁区」 ,因为绝大多数系统的使用
者对E-Mail的需求与依赖的程度之高,可说是稍有分毫差错,系统管理者就要准备接受如雪片般飞
来的抗议与 抱怨!而Sendmail这个东东的「内函」,似乎又有点不太容易理解: 与设定有关
的sendmail.cf 档,如果不是下过一番死功夫,则读起来如同读天书一样,只知道里面有英文字与
数字!所以一般人总是能不 动则不动,只要能用就好。不过,很不幸的,一般跟著机器而来
的sendmail总是有著令人心惊胆跳的「附加功能」,就是常常都有一些可以让无聊人士作为侵入路
径的BUG 或後门,某些BUG 还可以让侵入 者经由Sendmail而取得最高权限的root!一旦root权限
被人拿走了, 那麽这机器就可被人任意屠宰,最恶劣的,还可能破坏系统!

  Sun 在国内的使用人口相当的多,笔者对Sun 也稍微比较熟悉一点。不过,Sun的Sendmail却
是令人颇不敢恭维的,几乎可以说:只要还在使用Sun 的Sendmail而没有「常常」patch 的话,那
甚麽系统安全都不必谈了,谈了也是白谈;如果还在使用Sun 的Sendmail,那就如果系统抱著一颗
不定时炸弹,随时一个不注意,都可能引爆:(。这一点,大家可以翻一翻CERT或8lgm看一看,几乎
是只要有sendmail 的问题,Sun 大多跑了....。其他系统的Sendmail也不要偷笑,虽然大家的出
场率没有Sun 高,可是也常会问题的。 另一方面,Sendmail 8.6.9与之前的版本最近刚发现有
个ident方面的Bug 。如果方便的话,请大家务必换成最新版。如果不方便的话,在v8.6.5之後的
版本有个克难式的补救法,即在sendmail.cf 加入这麽一行:
  Orident=0
  表示不作ident 的检查。
  v8.6.5之前的版本就一定要换成最新版。

  本软体在系统安全方面,是目前评价最高的,目前已知的BUG都已经改好了,最主要的原因,
当然是要感谢作者Eric Allman ,他(或他们)能作到一发现重大的Bug (如系统安装)就立刻出新版
。本软体是一public domain ,可以在网路上各ftp server上找到其source code。由於该软体的
发展者把一些必要的设定步骤自动化了,所以,其实安装这个软体并不是想像中那麽样的困难。如
果连compile 的时间也算下去,顺利的话,不用半个小时就可以安装完毕!所以,「麦惊」啦!:


3.安装Sendmail

3.1 下载Sendmail最新版本

  最新版本的Sendmail可以从 ftp://ftp.sendmail.org/pub/sendmail/ 得到!
如 sendmail.8.9.3.tar.gz 这是截止到文章发布的最新版本,size:1068290byte
有关最新版本的发布,请浏览Sendmail的主页 http://www.sendmail.org

3.2 安装Sendmail

  用root登陆或su成root后,先把tar.gz的包解开tar fvxz sendmail.8.9.3.tar.gz,用make
-f 开始编译

  编译完成后系统会产生系统设定文件,也就是sendmail.cf (一般这个文件都存放在/etc下)

  接下来,这按几步继续安装: (注:~/sendmail为解开后的sendmail目录)

  1.请切换至设定档目录~/sendmail/cf/cf 之下。找一个合适自己系统的XXXX.mc档。笔者一
般上是使用tcpproto.mc 这一个不用uucp的档。如果是用tcpproto.mc 这个档,笔者在solaris
2.3 试了,得记得在档中要加上一行:
  OSTYPE(solaris2)
  Sun 4.1.3 不必,其他系统就不晓得了。在目录 ~/sendmail/cf/ostype下有几个OSTYPE()可
以的 档,只有这个目录有资料的才可能能够OSTYPE()。还有, 如果是 system V的/bin/mail,似
乎就得要加OSTYPE()。
  一句老话,详情请看DOCUMENT:~/sendmail/cf/README。这希望有经验的朋友能够补充:)
  如果不小心忘了加上OSTYPE()会怎样?也不会怎样,只会有"unknow mailer error" 的错误,
然後信收不到。
  有一点要提醒大家的,就是:在~/sendmail/cf/cf 所看到的各种系统的.mc 档,都
是Sendmail 8.6.x的作者 Eric Allman 「演示」给大家看的,所以,可以看到档名都有个"cs",
要是没有修改就用这些档的话,那一定会发生错误的。而要修改,有相当多地方要改,所以,如笔
者一般懒的人,用tcpproto.mc 还是比较简单又不会出错:)

  2.好,选定了某一个合意的.mc 档,那接下来可执行m4产生.cf 档。请下指令:
# m4 XXX.mc > YYY.cf 如果是sun 4.1.3 ,可能系统会抱怨m4的版本太旧了。那请试一试用:
  # /usr/5bin/m4 XXX.mc >YYY.cf
  要是还是不行,那就请去抓新版的m4回来compile (可以在 http://www.gnu.org 找到gnu
的m4)。

  这个步骤是要把compile好的files, install 到系统上去了。

  罗嗦的我还是得再一次提醒您看看:把旧档案备份好了吗?

  好,假设compile 的结果非常没挑战性的没有任何错误,产生.cf 档过程也没有甚麽值得注意
的讯息。所产生的.cf 档 也改好了。而且最重要的:作好旧档的备份(不是我要吓人,这是以防
万一)。

  1.挑个老板没有在用mail的时间,快手快脚的切换至目录~/sendmail/src ,下指令:
  # make -f Makefile.XXX install
  系统会把compile出来的~/sendmail/src/sendmail与man document拷贝到它们该有的目录(
所以你还如果没有备份/usr/lib/sendmail ,那赶快祈祷待回不要出问题,要不然就赶快准备泪水
哭吧!
  因为旧的会被compile 出来的sendmail覆盖)

  2.切换至目录~/sendmail/cf/cf ,把产生出来的YYY.cf档拷贝到本系统sendmail.cf 应该在
的地方,
  如:/etc或 /etc/mail 。

  3.把旧sendmail daemon 的process 杀掉。(这应该不用我罗嗦吧!用ps -ax |grep
sendmail |grep -v grep 找出旧daemon的process(或head -1/etc/sendmail.pid 或 head -1
/etc/mail/sendmail.pid),然后用 kill -9 processID干掉它(或直接用 kill -9 `head -1
/etc/sendmail.pid`)。

  4.启动新daemon。例如下指令:
  /usr/lib/sendmail -bd -q30m
  当然,保守一点,看旧的daemon怎麽跑,照旧的来下参数应该是没有问题。
  这时,初步安装就已经完成了,接下来请看设置sendmail

3.3安装Sendmail注意事项

  如果安装不成功,请参考下面的问题:
  用vi或任一种编辑器,编辑的makefile档,作一点点 必要的修改。所要修改的地方不多,下
面是可能要修改的地方:

  1."CC ="如果原档所用的compiler并不是我们系统的,这才要改。

  2.本系统是否有安装Berkerlay 的New database?如果有,跳过本点,到第3点。 如果没有(
如:一般SunOS 都没有装),那麽请修改这几 行(下面以Makefile.SunOS为例,但其他系统也类
似):

  A.在 DBMDEF= -DNDBM -DNEWDB -DNIS 一行,请改成: DBMDEF= -DNDBM -DNIS (即去
掉-DNEWDB)

  B.把这两行REMARK起来: INCDIRS=-I/usr/sww/include/db --> #
INCDIRS=-I/usr/sww/include/db
LIBDIRS=-L/usr/sww/lib --> # LIBDIRS=-L/usr/sww/lib

  C.修改LIBS= -ldb -ldbm -lresolv 这一行成: LIBS= -ldbm -lresolv (即去掉-db )

  3.把nroff 的"-mandoc "参数改成一般系统可以接受的 "-man"(当然,这得依你的系统而定
,如果你是用groff,那就可以很愉快的直接使用,不必改这个参数:)。如果不改也并不会影
响sendmail的安装,只是不能看到格式化後的sendmail相关文件罢了。

  关于DIRECTORY PERMISSIONS的问题你需要执行2条命令:

  chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
  chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

  许多系统的spool目录使用/usr/spool来代替/var/spool,设置别名的etc/mail取而代之的
是/etc,如果你要在sendmail.cf设置RunAsUser许选项,/var/spool/mqueue这个目录需
要RunAsUser 用户的权利,ok,这时开始编译Sendmail,执行这条命令

  sendmail -v -bi

  这时,开始初始化alias database. 如果它显示:

  WARNING: writable directory /etc
  WARNING: writable directory /usr/spool/mqueue
  那么这个目录列出了不适当的写特权,应该避免多方面的的安全攻击。

4.1 设置Sendmail.cf
  产生出来的YYY.cf一般得要改个地方才能正常的收信。请寻找"Cw",原来产生的.cf 档,Cw应
是:Cwlocalhost请在localhost 之後加上你那一台机器所有可能用来当收信地址的host name 。
  例如我有一台机器叫:ftp.games.net.cn,而且也叫:gopher.games.net.cn,
而我希望这一台机器这两个名字都能收信,那我要这么作:
  Cwlocalhost ftp.games.net.cn gopher.games.net.cn

  顺便说一下,Cw之後只能写入本机器的名字,千万不能写入其他机器的名字,否则,甚麽地方
都能寄,那被写的就一定不能寄。

  上面其实是简略的说法,如果你对DNS 也熟悉的话,可参考这节来作判断,判断是否须要在Cw
之後写入东东。否则请直接跳过这一小节,闭上眼睛把本机器所用的所有名字都写上就是了:)

  1.在一台机器上,如果有多个名字(hostname),而是用CNAME 建立的,如:
  $ORIGIN games.net.cn
  ftp IN A 140.119.1.2
  gopher IN CNAME ftp

  那麽可以不必在Cw上标明。系统会透过DNS 找到其 Canonical name。

  2.如果一台机器有多个名字,可是,每个名字是用A record 建立的。如:
  $ORIGIN games.net.cn.
  ftp IN A 192.168.25.2
  gopher IN A 192.168.25.2
  这种情况【一定】要记得在Cw後写上你所要收信的名字。如果这个忘了写,会有怎样的问题呢

  忘了将会有从外面机器寄信来,没有写上的机器名将却收不到信,机器会抱怨:
  "Local configuration error" 。

  如:我的sendmail.cf中的Cw这行是如下: Cw games.net.cn
  那我将无法使用这个地址:
  username@games.net.cn
  而只能用
  username@ftp.games.net.cn 否则将出现上述错误。

  如果发现了错误,那再加上去也就可以了。

  3.如果一台机器有多interface ,各interface有其本身的名字,且要收信。
  这个情况也要在Cw之後写明所有要收信的hostname。

  ok!一个标准的sendmail.cf文件就设置完了!

4.2 设置access

  打开/etc/mail/access,你会看到 (注意一些系统的access文件不再/etc/mail下,如找不到
请用whereis查找或检查是否安装正常)

  # Check the /usr/doc/sendmail-8.9.3/README.cf file for a description
  # of the format of this file. (search for access_db in that file)
  # The /usr/doc/sendmail-8.9.3/README.cf is part of the sendmail-doc
  # package.
  #
  # by default we allow relaying from localhost...
  localhost.localdomain RELAY
  localhost RELAY

  如果您的IP地址是192.168.25.11的话,这样请在最后一行加上192.168.25.11   RELAY
  其文件的最后三行应是:

  localhost.localdomain RELAY
  localhost RELAY
  192.168.25.11 RELAY

  加上这句话您就可以用sendmail发送接收mail了!但是如果您想让别人也可以使用sendmail的
话,他的IP是202.168.25.22,这样就在在最后一行加入202.168.25.22   RELAY
  其文件的最后四行应是:

  localhost.localdomain RELAY
  localhost RELAY
  192.168.25.11 RELAY
  192.168.25.22 RELAY

  我想,您现在一定有个疑问是,如果我想设置50个人用sendmail是不是需要加50个IP啊!?
  嘿嘿,不用啦,是这样,sendmail考虑到多用户的时候,它准许你添入整个C类地址,(B类好
像也可以,我没try过!)
  其格式如下:

  localhost.localdomain RELAY
  localhost RELAY
  192.168.25 RELAY

  这样,您就是把192.168.52这整个C都加入的sendmail中,这个C类地址的用户,如果在你的系
统里有账号的话,就可以使用sendmail收发信件了!

4.3 设置pop3

  如果您需要pop3来接收信件,您需要打开pop3端口,

  vi /etc/inetd.conf 查找到
  # pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
  把#号删掉。

  vi /etc/services 查找到
  #pop-3 110/tcp # POP version 3
  把#号删掉。

  这样,在restart inetd后,pop3 110端口就可以接信了!如果还是不行,请检查是否安装pop
3端口!

4.4 如何restart sendmail;inetd以及注意事项

  有一点要提醒大家的,要用"kill -9 [pid-of-sendmail]" ,从新启动sendmail
  如果用 kill -HUP 是不会发生作用的! (这是颇多人常遇到的问题,切记!)
  在redhat6中用/etc/rc.d/init.d/sendmail restart即可!

  inetd是/etc/rc.d/init.d/inetd restart

5.1 sendmail的别名和forward


  (1) 关于直接用IP地址发信

  mail user@[166.111.IP.Address]
  只要用[]将IP地址括起来就行了

  (2) 关于alias

  sendmail在/etc下有两个文件 aliases和aliases.db, 后者是前者用newaliases
生成的别名数据库. 你可以手工编辑/etc/aliases, 然后运行newaliases更新数据库(其
实newaliases是个到sendmail的 symlink)

  eg: nickname : user@hotmail.com
  alias-name: real-user-account

  则以后mail nickname就可以将信寄到user@hotmail.com处
  而别人寄给alias-name@your.domain.name的信就会转给真正的用户   
 real-user-account

  (3) 关于forward

  在你的$HOME目录下面编辑一个.forward文件, 里面写上你要forward的目的e-mail
地址或本机的用户名, 就可以自动将信 forward到相应地址

  eg: .forward: user@hotmail.com
  或 other-user-account
  则给此人的e-mail会forward到hotmail或other-user-account处

  (4) 关于vacation

  去找一个vacation包(如RedHat的contrib中有vacation的rpm), 装上后就一个
  /usr/bin/vacation程序和一个man.
  先运行vacation, 它会让你编辑$HOME/.vacation.msg文件, 就是要发回给对方
告诉他你现在不看信的东西啦. 然后编辑$HOME/.forward文件, 写这样一句 \username,
"|/usr/bin/vacation username", username 要换回你自己的了然后运行vacation -I建
立$HOME/.vacation.db就好了 (看看man更详细)

  (5) 关于sendmail的一些文件

  /var/log/maillog sendmail的log, 分析错误有用
  /var/spool/mail/$USER 进来的信, 每个用户一个文件
  /var/spool/mqueue mail queue, 可以用mailq看队列中待发的信
  (mailq也是 sendmail的symlink了)
  dfxxxxxx 这是信的内容
  qfxxxxxx 这是信的subject和别的信息 (反正每信一个号了, 配对的)
  /etc/sendmail.cf sendmail的配置文件, 改动它可要小心
  /etc/sendmail.cw 假如你的机器有好多alias的话就把名字写在
  这个文件中, 这样写哪个都能收到信

5.2 限制邮件的大小

  Modify /etc/sendmail.cf:
  Mlocal, P=/bin/mail, F=lsDFMrmn, S=10, R=20/40,
  Maxsize=1000000,
  A=mail -d $u
  Mprog, P=/usr/local/sendmail/smrsh, F=lsDFMeu, S=10, R=20/40, D=$z:/,
  Maxsize=1000000,
  A=sh -c $u

  This limits incoming mail processed by by smrsh and /bin/mail to 1 million bytes.

  You can do the same with the Mstmp, Mesmtp, and Mrelay statements to limit the
size of outgoing mail as well.
  You can do the same with the Mstmp, Mesmtp, and Mrelay statements to limit the
size of outgoing mail as well.
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何在Nginx配置Cookie安全策略如何在Nginx配置Cookie安全策略Jun 10, 2023 pm 12:54 PM

随着互联网的不断发展和普及,Web应用程序已成为人们日常生活中必不可少的一部分,这也决定了Web应用程序的安全问题非常重要。在Web应用程序中,Cookie被广泛使用来实现用户身份认证等功能,然而Cookie也存在着安全风险,因此在配置Nginx时,必须设定适当的Cookie安全策略,以保证Cookie的安全性。下面是一些在Nginx中配置Cookie安全策

使用CMake构建Linux内核的配置指南使用CMake构建Linux内核的配置指南Jul 06, 2023 pm 02:46 PM

使用CMake构建Linux内核的配置指南概述在Linux开发中,构建和配置内核是一个重要的环节。对于大多数人来说,使用Kconfig和Makefile是最常见的配置方式。然而,使用CMake来构建和配置Linux内核也是一个灵活且强大的选择。本文将介绍如何使用CMake来构建和配置Linux内核,并附上一些代码示例。安装CMake首先,我们需要安装CMak

MySQL连接池的最大连接数如何设置?MySQL连接池的最大连接数如何设置?Jun 30, 2023 pm 12:55 PM

如何配置MySQL连接池的最大连接数?MySQL是一个开源的关系型数据库管理系统,被广泛应用于各种领域的数据存储与管理。在使用MySQL时,我们常常需要使用连接池来管理数据库连接,以提高性能和资源利用率。连接池是一种维护和管理数据库连接的技术,它能够在需要时提供数据库连接,并在不需要时回收连接,从而减少了连接的重复创建和销毁。而连接池的最大连接数则是连接池所

Nginx错误页面配置,优雅处理网站故障Nginx错误页面配置,优雅处理网站故障Jul 04, 2023 pm 04:06 PM

Nginx错误页面配置,优雅处理网站故障在现代互联网时代,一个高度稳定和可靠的网站是任何企业或个人追求的目标。然而,由于各种原因,网站可能会经历故障或错误,这可能是由于网络问题、服务器问题或应用程序错误等。为了提供更好的用户体验和优雅地处理任何可能发生的错误,Nginx作为一个强大的Web服务器软件,不仅能够提供高性能的服务,还能够灵活地配置错误页面。在Ng

使用GDB调试Linux内核的常用配置技巧使用GDB调试Linux内核的常用配置技巧Jul 05, 2023 pm 01:54 PM

使用GDB调试Linux内核的常用配置技巧引言:在Linux开发中,使用GDB调试内核是一项非常重要的技能。GDB是一款功能强大的调试工具,可以帮助开发者快速定位和解决内核中的bug。本文将介绍一些常用的GDB配置技巧,以及如何使用GDB调试Linux内核。一、配置GDB环境首先,我们需要在Linux系统上配置GDB的环境。请确保你的系统已经安装了GDB工具

如何通过宝塔面板进行UFW防火墙的配置如何通过宝塔面板进行UFW防火墙的配置Jun 21, 2023 am 09:08 AM

在Linux服务器上配置防火墙非常重要,它可以有效地保护服务器免受恶意攻击。在Ubuntu操作系统上,我们可以使用UFW防火墙来保护服务器的安全。在本文中,我们将介绍如何使用宝塔面板配置UFW防火墙。第一步:安装宝塔面板首先,我们需要在Ubuntu上安装宝塔面板。您可以在宝塔官网免费下载宝塔面板的安装包,然后在命令行中运行以下命令来安装宝塔面板:$wget

如何使用Linux进行虚拟网络配置如何使用Linux进行虚拟网络配置Jun 18, 2023 am 11:24 AM

随着云计算、大数据和物联网等技术的日益普及,虚拟化技术成为了当今IT领域的热门话题。虚拟化是通过将一台物理主机划分为多个独立的虚拟机,实现资源的共享和管理的方法。虚拟网络是虚拟化的其中一个重要组成部分,能够满足不同应用之间的网络隔离和互动需求。在本文中,我们将介绍如何使用Linux进行虚拟网络配置。一、Linux虚拟网络的概述在物理网络中,网卡是连接网络设备

Intel TXT的安装和配置步骤Intel TXT的安装和配置步骤Jun 11, 2023 pm 06:49 PM

IntelTXT(TrustedExecutionTechnology,可信执行技术)是一种硬件帮助保护系统安全的技术。它通过使用硬件测量模块(TPM)来确保系统启动过程中的完整性,并且可以防止恶意软件攻击。在本文中,我们将讨论IntelTXT的安装和配置步骤,帮助你更好地保护你的系统安全。第一步:检查硬件要求安装IntelTXT前,需要先检查计算

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version