Linux 版 (精华区)
发信人: tcpip (高级草包), 信区: Linux
标 题: 公报11-家庭网络中的邮件配置-2
发信站: 紫 丁 香 (Wed May 3 09:21:05 2000) WWW-POST
1. 如果sendmail找不到你的邮件服务器:
编辑/etc/sendmail.cf找下面的行:
#Dj$w.Foo.COM
改成:
Djmaster.kulai.org
kulai.org是你的邮件服务器。注意:删去“#”,因为“#”表示是注释行。这是
sendmail的一条规则,它告诉sendmail邮件服务器在什么地方 -- 如果是DNS的话,则不
需要。
2. 基于目的的伪装:
最为困难的时候是让sendmail只在给INTERNET发信的时候伪装而在本地的邮件中却不。例
如:我想让本地的邮件显示发送者为:bmote@kulai.org而不是bmote@deniz.com,很显然
我希望发往INTERNET的邮件都具有bmote@deniz.com的发送者信息。为解决这个问题,你
可以手工地修改/etc/sendmail.cf文件,找到本地邮件规则集的10和30(提示:找S10和
S30),删掉这两行 -- 或是注释掉。
# Envelope sender rewriting
#
S10
R<@> $n errors to mailer-daemon
R@ <@ $*> $n temporarily bypass Sun bogosity
R$+ $: $>50 $1 add local domain if needed
R$* $: $>94 $1 do masquerading <-- delete this line
#
# Header sender rewriting
#
S30
R<@> $n errors to mailer-daemon
R@ <@ $*> $n temporarily bypass Sun bogosity
R$+ $: $>50 $1 add local domain if needed
R$* $: $>93 $1 do masquerading <-- delete this line
对于这个问题m4不能解决,所以你必须直接修改sendmail.cf文件。当然你需要重启
sendmail。
注意: 在我的邮件程序中,我的"From:"行是“jpollman@kulai.org”,所以sendmail只
是伪装向外发的邮件。非常感谢 Achim Lobbert。
3. 使用未允许的名字失败:
如果你只是在邮件的"To:"部分写上用户的名字,邮件将会消失在INTERNET上。你应该告
诉sendmail这些未允许的名字的邮件该发到哪里。 在master.mc的末尾加入:
define(`LOCAL_RELAY',`mail.kulai.org')
LOCAL_RELAY: 在说一次,把你的邮件服务器的名字,而不是mail.kulai.org放在这儿。
这一行让sendmail发送未允许的名字,像“bmote”,到你的邮件服务器上。例如:
sendmail将会为bmote加上kulai.org。这样你就可以在邮件中只输入bmote就行了,而不
用写bmote.kulai.org。当然,你还得使用m4,重复地重启,让它起作用。
我不知道我用了多少次的m4编辑我的sendmai.mc,然后又重启了多少次。我写了一个脚本
程序去做这些工作。现在我只需要用m4修改文件,然后运行:./newsendmail(脚本程序
的名字)。程序如下:
#!/bin/sh
m4 master.mc > _master.cf
cp _master.cf /etc/sendmail.cf
/etc/rc.d/init.d/sendmail restart
把它放到/usr/lib/sendmail-cf/cf目录下,并设置成可执行:
chmod 700 newsendmail [Enter]
------------------------------------------------------------------------------
--
家庭网络中的邮件配置
POP3
作者:JC Pollman and Bill Mote 译者:Chris Yang、刘健、王郸
------------------------------------------------------------------------------
--
设置一个POP3服务器是一件很简单的事。首先设置服务器再设置帐户。
编辑/etc/services并保证下面这两行存在,删掉行头的“#”字符。
pop-3 110/tcp # PostOffice V.3
pop 110/tcp # PostOffice V.3
编辑/etc/inetd.conf并删去下面这行头上的“#”字符:
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
然后重启inetd;
killall -HUP inetd [Enter]
现在你的pop3服务器已经完全地启动了,并可以操纵它了,简单而漂亮。
它将使用登录名和口令为在服务器上有帐户的用户提供邮件服务。如果有些用户只有邮件
服务的需要,为安全起见,你应该限制他们的其他权限。要使一个用户不能登录,可以把
/etc/passwd文件中该用户对应的口令域置为“*”,并指定一个假的shell -- 例如
/bin/fail -- 在所在行的最后一个域。这样,该用户还是可以使用邮件服务,如果IP伪
装设置好了话,还可以使用modem。但是他们不能telnet,ftp或其他一些远程程序连接到
邮件服务器。
你们中的很多人可能想使用imap而不是pop3。本文的目的是先设置好pop3,等一切工作正
常后,再试试imap。尽管imap提供了很大的方便,尤其当你需要经常切换到不同的操作系
统和使用不同的邮件客户端程序,更是如此。但我们对此保留意见。几乎每次有人想侵入
我的邮件服务器的时候,他们都会测试一下imap。有些安全问题在imap的早期版本中存在
过但现在已经被修改了,所以如果你想在你的服务器上实现它的话,我们强烈推荐使用最
新版本。
家庭网络中的邮件配置
Fetchmail
作者:JC Pollman and Bill Mote 译者:Chris Yang、刘健、王郸
------------------------------------------------------------------------------
--
Fetchamail会从网络上(你的ISP帐户或其他你拥有邮件帐户的地方)读取你的邮件并把
它们传给正在服务器上运行的procmail程序,然后procmail把邮件放进你的帐户里。它可
以用于很多中邮件服务器,包括pop3和IMAP,但它不能用于Exchange服务器。
尽管fetchmail可以处理很多琐碎的事情,我们还是让它保持简单。每一个在INTERNET上
有帐户的用户得创建一个文件:~/.fetchmailrc。对我们服务器上的"jpollman"用户,
/home/jpollman/.fetchmailrc文件是这样的:
poll www.deniz.com with proto POP3
user "jpollman" there with password "mypassword" is jpollman here
每一部分的解释:
poll www.deniz.com: 连接 www.deniz.com -- 我的ISP的pop3服务器。
with proto POP3: 使用pop3协议接收邮件。
user "jpollman" there: 我在ISP邮件服务器的登陆名。
with password "mypassword": 密码。
is jpollman here: jpollman 是在家庭邮件服务器的用户。
放一个.fetchmailrc文件在每一个需要从INTERNET收邮件的用户的家目录下。注意:每个
.fetchmailrc文件应该有所不同,应为每个人都有不同的internet邮件地址。而且,
fetchmail在权限和所有权的设置上有写独特 -- 对于邮件口令应该应该是隐私来说是一
件好事。确认.fetchmailrc是正确的,对"jpollman"使用以上的例子:
chown jpollman /home/jpollman/.fetchmailrc [Enter]
chmod 700 /home/jpollman/.fetchmailrc [Enter]
如果一个用户在INTERNET上有多于一个的帐户,则加入多个以该用户名开始的行。
我们可以让fetchmail作为守护进程来运行,频繁地查看ISP。但是,如果没有建立连接,
fetchmail会启动diald。我们可以用一个脚本程序(我叫它getmail)来做。该脚本被cron
和ip-up.local调用-- 看下面的例子:
#!/bin/sh
if [ -f /var/lock/LCK..ttyS3 ]; then
su jpollman -c fetchmail
su bmote -c fetchmail
fi
但它运行时,首先检查是否已经建立了连接(diald在建立连接后会把一个LCK..ttyS3的
文件放在我的/var/lock目录下,在断开连接时删掉该文件)。注意:也许你的daild的设
置会和我们的不同,也许你在使用pppd或可能使用不同的com端口,那样lock文件可能会
有不同的名字。这个脚本程序如果没有发现lock文件则退出。如果我们建立的连接,脚本
程序用su命令变成用户jpollman然后执行fetchmail程序。选项“-c”表示执行一条命令
。fetchmail在接收完jpollman的邮件后,脚本程序又用su命令变成bmote然后再执行
fetchmail去接收他的邮件。注意:jpollman和bmote是我们自己服务器上的用户 -- 而不
是ISP邮件帐户的名字。
Cron:这是cron的一个快速教程。crond是一个在你boot机器时被启动守护进程,并且一
直在后台运行。它每分钟读一次crontab看看有没有什么东西要执行的。你需要为"root"
用户创建一个crontab。在"root"下键入:
crontab crontab [Enter]
"root"用户现在有了他自己的crontab文件 -- 和系统的相同。修改"root"的crontab,键
入:
crontab -e [Enter]
留下所有头上的行并删掉程序行。完成后应像这样:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
HOME=/
MAILTO="root"
要让cron执行一个程序,加入一个由六个域组成的行:前5个是时间域,第六个是要执行
的程序。 例子:
0 1 * * * getmail
时间域可分解为:
时间/日期域是:
域名 允许值
---- ------
minute 0-59
hour 0-23
day of month 0-31
month 0-12(r names, see below)
day of week 0-7(0 or 7 is Sun, or use names)
如果一个域的值是“*”则表示“从第一个允许值到最后一个允许值”。
可以指定数字的范围。数字的范围由两个数字和一个连字符组成。例如:
在"hour"域指定8-11表示在8,9,10和11点执行。
所以在上面的例子中(0 1 * * * getmail)getmail将在每天早上的1点钟被执行。我更
喜欢让它每5分钟执行一次,我的crontab是这样的:
0-59/12 * * * * /usr/local/bin/getmail
为得到更多的crontab文件的帮助,键入:
man 5 crontab [Enter]
ip-up.local:为了让脚本程序在每次建立连接时执行,需要把它加入到
/etc/ppp/ip-up.local( 或ip-up文件,如果你只有这个文件的话)。加入它需要一个行
指定脚本的全路径。我的是这样的:
/usr/local/bin/getmail
家庭网络中的邮件配置
最后的一些思考
作者:JC Pollman and Bill Mote 译者:Chris Yang、刘健、王郸
------------------------------------------------------------------------------
--
当sendmail将邮件排队时,它将会把邮件放在哪儿? 邮件队列的目录是
/var/spool/mqueue。所有的邮件都变成两个文件,一个为dfXXXnnnnn, 另一个为
qfXXXnnnnn。XXX是3个字母的序列号,nnnnn是5个数字的序列号。它们用于唯一地标识一
封邮件。"qf",表示队列控制文件,包含电子邮件的信息头和各种处理信息; "df"表示
数据文件,包含邮件的内容。还有另外两个文件,只是被sendmail所用。
要看sendmail在做什么,可以查看/var/log/maillog文件这个文件非常难懂,但它是你唯
一可以查看错误发生的地方。
你们中有些人在ISP的帐户名和在本机的登录名不一致。Fetchmail很明显地接受你的邮件
并把它们送到所属的地方,但sendmail却需要一些特别的帮助。查看一下
sendmail-Address_rewrite HOWTO。如果你能看懂本文的话,那篇文章应该是很简单的。
当开始不成功的时候千万别放弃。我用sendmail四年,并获得了不同程度的成功。它是一
个发展多年的怪兽。因为INTERNET上大部分的邮件是靠sendmail来传递的,所以它是值得
你花时间的。
最后的想法:我们给了你一个设置简单家庭邮件系统的方法。成功总是会带来很多的乐趣
。下面是供进一步学习的资料:
Sendmail Homepage
Fetchmail Homepage
Procmail Info
两个sendmail的著名的替代品:
Exim
Qmail
--
"这一千多年没写诗了?"
"写了, 不过只写了两句."
"千年得两句, 一定是万古丽句了. 念来听听."
"好吧, 我现丑了" 太白星清了清嗓子, 浑厚的男中音在天庭响起:
大海啊, 都是水;
骏马啊, 四条腿;
※ 来源:·紫 丁 香 bbs.hit.edu.cn·[FROM: freesrc.hit.edu]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.635毫秒