<?php

Nginx 新的开发分支 0.8.1 发布

自从 Nginx 0.7.59 版本发布后, Nginx 将 0.7.x 版本标识为稳定版,并开始下一个开发版本 0.8.x ,该版本为 0.8 系列的第一个发行版本。主要改进内容包括:

Changes with nginx 0.8.1 08 Jun 2009

*) Feature: the “updating” parameter in “proxy_cache_use_stale” and “fastcgi_cache_use_stale” directives.
*) Bugfix: the “If-Modified-Since”, “If-Range”, etc. client request header lines were passed to backend while caching if no “proxy_set_header” directive was used with any parameters.
*) Bugfix: the “Set-Cookie” and “P3P” response header lines were not hidden while caching if no “proxy_hide_header/fastcgi_hide_header” directives were used with any parameters.
*) Bugfix: the ngx_http_image_filter_module did not support GIF87a format.
*) Bugfix: nginx could not be built modules on Solaris 10 and early; the bug had appeared in 0.7.56.

Changes with nginx 0.8.0 02 Jun 2009

*) Feature: the “keepalive_requests” directive.
*) Feature: the “limit_rate_after” directive.
*) Bugfix: XLST filter did not work in subrequests.
*) Bugfix: in relative paths handling in nginx/Windows.
*) Bugfix: in proxy_store, fastcgi_store, proxy_cache, and fastcgi_cache in nginx/Windows.
*) Bugfix: in memory allocation error handling.

下载地址:

nginx-0.8.1, nginx/Windows-0.8.1

nginx 0.7 稳定版本发布

刚刚,,,Igor Sysoev发布了近一年来被广泛使用的轻量级Web服务器Nginx0.7系列最新版本0.7.59,同时正式将0.7做为新的Stable稳定系列(0.7.0由19 May 2008开始开发),此前的稳定系列0.6为0.6.37。
0.7系列的主要改进包括:

*) caching of proxied and FastCGI servers;
*) “try_files” directive;
*) the “location” and “server_name” directives support captures
in regular expressions;
*) XLST and image filters;
*) a preliminary IPv6 support;
*) nginx/Windows.

下载:
0.7.59 http://sysoev.ru/nginx/nginx-0.7.59.tar.gz
Windows平台 http://sysoev.ru/nginx/nginx-0.7.59.zip
改进 http://nginx.net/CHANGES

Sendmail relay规则及配置文件用法汇总

昨天尝试配置sendmail,配置很简单,但完成后发现能收到邮件,能发给本域下的其他账号,却无法发给其他域。。报550错误
无奈中寻找到了下面这篇介绍详尽的好文章。感谢原作者!
我看到的地址是:http://fanqiang.chinaunix.net/a6/b3/20010725/0800001019.html
原文如下
本文出自: 作者:Jephe (2001-07-25 08:00:00)
 
第一部分 mail relay 规则详解
一. 软件环境:Sendmail 8.9.3
二. 默认情况下的relay规则
在默认情况下,也就是安装完系统(Sendmail服务器)不做任何设置的情况下,则只能在本机上收发邮件,网络上(局域网或Internet)的任何其它主机不能向该SMTP服务器发送邮件,若希望能实现发送,则需满足下面的任何一个条件即可(不需要同时满足):
1. 发送者身份属于“本地或者被允许的发送者”。
2. 接收者身份属于“本地或者被允许的接收者”。
也就是说,不管是邮件的发送者还是邮件接收对象只要其中之一属于本地或被允许的时候,Sendmail邮件服务器才允许relay你的邮件.那么什么是“本地/被允许的发送者”呢?
实际上只有一种,就是列在文件/etc/mail/relay-domains(默认安装后无此文件,你可以创建它)或者/etc/mail/access中的域名或者IP地址行,如:
abc.com (/etc/mail/relay-domains)
abc.com relay (/etc/mail/access)
注:
a.我们假定某公司域名为abc.com
b.上面的两行含义相同,只是在不同的文件中所要求的语法不同而已,在/etc/mail/access文件中需要加上relay.
===先讨论域名的情况:
回到前面所说的何谓“本地/被允许的发送者”,如果在relay-domains/access文件中列出的是域名,则对发送者的IP地址先查找/etc/hosts文件(一般是如此,因为默认情况下对Linux服务器来说,查找DNS是先查找/etc/hosts文件看是否有此IP地址对应的主机域名,如无再做反向DNS查找,如果能够反向查找出来,且查找出来的主机的域部分属于上面两个文件中列出的域名,再对该主机名做正向DNS查找出的IP地址(主机的A记录)与发送者IP地址相同,则允许relay邮件,这表明发送者属于被允许的发送者。
也就是说,先看/etc/host.conf文件中的定义,一般是这样:
order hosts,bind
multi on
其中的order行指明先查/etc/hosts,再找DNS数据库。现在举个例子:
如下图:
内部LAN | Internet
|windows PC| ———–>|sendmail server|
(192.168.11.12) SMTP (192.168.11.5)|(1.2.3.4)
(A) 发送邮件 (B)
jephe.abc.com sh.abc.com
( 图一 )
在内部LAN上有一台windows PC,简称机器A,主机名为jephe.abc.com向一台连接内部LAN和Internet的一台Sendmail SMTP服务器,简称机器B发送邮件,地址分别为192.168.11.12 和 192.168.11.5 ,SMTP服务器外部地址为1.2.3.4专线连接Internet.假定该公司域名为abc.com,机器B既是SMTP服务器也是DNS服务器,在此我们不考虑防火墙的设置,即在内部LAN方向上所有的机器对于192.168.11.5内部网卡接口可以自由进入(允许所有
的通过192.168.11.5来自/去往192.168.11.0/24网段的TCP/IP包)。
如果在机器B的/etc/mail/relay-domains或者/etc/mail/access文件中有一行
abc.com
或者
abc.com relay
当A向B发送邮件时,若B能在它的/etc/hosts中找到一行如
192.168.11.12 jephe.abc.com则允许A向B发送邮件,也就是接收从A发来的所有邮件,不管是去向哪里,因为这种情况符合第一种relay规则,即发送者是被允许的发送者。此时不需要再查找DNS了,到此为止。邮件已经被接收。
如果在/etc/hosts中找不到与192.168.11.12(发送者IP地址)对应的行,则再查找DNS,对192.168.11.12做反向解析,如果能在反向DNS数据库中找到对应192.168.11.12的主机记录,且找出来的主机名再从DNS中正向查找若两者一致,则允许relay,跟上面的情况一样,属于第一种被允许的relay规则。
如:
在DNS数据库中找到192.168.11.12对应的DNS主机名为jephe.abc.com.且又在@abc.com域的DNS中查找到对应于主机jephe的A类记录地址为192.168.11.12,则满足条件。
发送者属于本地域,即被允许的发送者。
需要注意的是,必须正反向解析都需要能解析且一致才行,否则不允许relay,且会在/var/log/maillog中记录一行警告信息说”may be forged”(可能被伪造的)
但也并非所有记录”may be forged”信息到/var/log/maillog文件中的情况都不允许relay,也有的情况下虽然记录了一条警告消息说”may be forged”,但邮件仍然被接收了,是在下面的情况下:
例如: 在B机上/etc/mail/relay-domains中有下面两行
abc.com
yahoo.com
[注:在此不再累述关于/etc/mail/access,因为前面已经说了在/etc/mail/relay-domains
中的一行如
abc.com
相当于/etc/mail/access中一行
abc.com relay
故在下文中不再累述,只提/etc/mail/relay-domains或者/etc/mail/access.]
若A向B发送邮件到 someone@yahoo.com . 在B机的/etc/hosts中没有相应的对应于192.168.11.12的记录行。
且在B机(DNS服务器)上不能对IP地址192.168.11.12做反向查找,或者能做反向查找如查找出来为jephe.abc.com但在正向查找(对abc.com域的主DNS数据库中查找对应于主机jephe的A记录)中没有对应于主机jephe的A记录,或者有但找出来的IP地址不是192.168.11.12的话。
但是。接收者是someone@yahoo.com,域yahoo.com在/etc/mail/relay-domains中。则还是允许relay。
但就会记录警告消息may be forged到/var/log/maillog文件中,这种允许属于第二种mail relay规则:
接收者是被允许的接收者。因此,只要是正反向DNS不一致总会记录该警告消息到maillog中。
Sendmail不是单纯地查看反向DNS解析,而后正反都要匹配,否则不relay,为什么如此?在后面我们会举例说明。
由此我们引出===什么是“本地的或者被允许的接收者”?
这个比较简单,也就是接收者的email地址的域部分被列在/etc/mail/relay-domains或者/etc/mail/access
文件中,如上面的情况,发到@yahoo.com域的任何接收者都被允许接收。
注意一个范围问题,如果发送者的域名(根据前面说的/etc/hosts或者正反向DNS一致的解析)被列在这两个文件中,则该发送者可以发送给任何人的邮件,都能被接收,但若不是这种情况,则只能发送到接收者的email地址的域名在这两个文件中的那些接收者。后者的情况接收对象的范围要比前者小。
再引出另一个值得注意的问题,就是在文件relay-domains或者access中列出的域名既是针对发送者来说的,也是针对接收者而言的。对于发送者来说,检查/etc/hosts,和正反向DNS,对于接收者而言,仅检查接收者邮件地址的域部分。
还有,对于第二种mail relay规则,还多一种情况,即:
若接收者的域名部分被列在/etc/sendmail.cw中,则该接收者也属于本地接收者。
(默认情况下,sendmail.cw是在/etc下,当然你也可以直接更改/etc/sendmail.cf中的sendmail.cw路径)
然后检查别名文件aliases (具体路径靠你的定义)去扩展别名。
举个例子:
Internet
————————-|————————-
(eth0:1.2.3.4)| Beijing Telecom | |
[SMTP server] [SMTP server] [SMTP server] [SMTP server]
sh.abc.com mail.abc.com bj.abc.com sz.abc.com
(eth1:192.168.11.5) (DNS) | |
| ____ | |
____|____|_PC_| ___ __|_____ _____|______
(LAN) | (LAN) (LAN)
|(192.168.11.1)
[mailhost]
(图二)
假若公司abc.com在北京,上海和深圳有分公司,总部在北京,放一台mail 服务器在北京电信局,且其它各分公司,上海,北京,深圳都各自用专线连到当地的ISP。
所有外部进入发到someone@abc.com的邮件都首先经过存放在北京电信局的mail.abc.com
邮件主机,在该邮件服务器上的/etc/sendmail.cw中有一行abc.com,则发到@abc.com的邮件经过mail.abc.com时检查别名文件aliases.
若有三行如下:
shuser:shuser@sh.abc.com
bjuser:bjuser@bj.abc.com
szuser:szuser@sz.abc.com
则发到shuser@abc.com,bjuser@abc.comszuser@abc.com的邮件分别被别名为shuser@sh.abc.com,bjuser@bj.abc.comszuser@sz.abc.com,然后分发到各分公司的Sendmail SMTP
邮件服务器。
注意:Sendmail检查别名文件是不停地做检查直到不能再做为止。具体是这样的,象上面的文件中的的三行,如果mail.abc.com收到一封信是shuser@abc.com,发现abc.com在sendmail.cw中,则接收该邮件(为什么?因为接收者的email地址的域部分在sendmail.cw文件中则是本地接收者,relay规则第二点)
本地接收者则检查别名文件,别名到shuser@sh.abc.com,然后再把别名出来的email地名域部分,现在是sh.abc.com,与sendmail.cw中的列出的域比较,若仍符合则继续别名下去直到不能符合条件为止。
现在引出一个问题就是注意不要使得别名检查循环下去,象上面的情况下,若加sh.abc.com到sendmail.cw中则出现别名检查循环而出错。
现在,经过别名之后如何再发送邮件呢?一般的发送邮件过程是这样的:
若上面的服务器mail.abc.com收到一封发到shuser@abc.com的信,则先经过别名为shuser@sh.abc.com
1. Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次请求DNS查找看是否有shmail的CNAME记录,直到没有为止
2. 现在我们假定没有任何CNAME记录存在,仍然是shuser@sh.abc.com.则Sendmail请求DNS给出sh.abc.com的MX记录,并得到一个这样的记录:
sh MX sh.abc.com
3. Sendmail请求DNS给出sh.abc.com的A记录(IP地址),返回值为1.2.3.4
4. 与1.2.3.4建立SMTP连接,然后发送邮件.
前面说明了在/etc/mail/relay-domains或者/etc/mail/access中有域名的情况,若只有IP地址呢?

192.168.11.12
或者
192.168.11.12 relay
则直接就是单纯地指发送者机器的IP地址. 可以是内部网段的保留地址A类: 10.0.0.0–10.255.255.255 (10.0.0.0/8)
B类: 172.16.0.0-172.31.255.255 (172.16.0.0/12)
C类: 192.168.0.0–192.168.255.255 (192.168.0.0/16)
也可以是外别真实IP地址,如果如此,由直接允许一个拨号上来的真实IP地址relay邮件.
注意下面的两个问题:
问题1: 公司对移动用户的考虑.
在上面的图二中的左边部分实际就是图一.以图一为例.假若上海公司某员工不在公司里时,用笔记本拨上海电信163上网,该员工不能简单地设置发送邮件服务器为sh.abc.com(1.2.3.4).既使你的Outlook Express中设置的邮件地址为jephe@abc.com .为什么?
因为Sendmail根本不检查你的发送者邮件地址,而是你拨号上来的IP地址,但是你拨号上来的IP地址是动态随机分配的,而且由该IP地址反向解析出来的域名是ISP的域名,不是@abc.com ,实际上,在你拨号上来得到一个IP地址后向sh.abc.com发送邮件时,建立到1.2.3.4的25端口的TCP连接时,Sendmail只知道你的IP地址,
然后在应用层收到数据后反向检查DNS查找该IP地址对应的域名,但是它是ISP的域名.与你的组织毫无关系.而且大多数ISP没有为拨号IP地址段设置反向DNS查找记录.
故对那些拨到ISP的公司员工,需要用公司的服务器作为发送邮件服务器的话,公司的邮件服务器没法配置使得仅仅允许公司的员工做它做为发送邮件服务器,没法仅仅relay公司的在外的需拨到ISP的员工的信.
当前的解决办法:
a. 公司设置自己的拨入服务器,仅仅公司员工可以用自己的用户名和密码拨入后发送邮件.
b. SMTP-After-POP3方法, 修改POP3程序,拨到ISP后先收一次自己的信,POP3检测到收信者IP地址后再动态地加这个IP地址到relay-domains或者access文件中,允许relay默认半个小时.
c. sendmail 8.10加入了SMTP用户认证功能,发送邮件时提示输入用户名和密码后允许relay.
问题2: 为什么必须正反向解析一致,为什么may be forged?
假若一黑客组织操纵了一个ISP机构,如果你的Sendmail仅仅检查反向DNS解析出来的域名,如是你的公司域名则允许relay mail的话,则被黑客集团操纵的ISP机构可以把其所拥有的IP地址段在自己的反向DNS数据库中设置反向解析出来的域为你的公司域名,然后你的sendmail不加区别地relay它.认为该ISP的用户为自己的本地/被允许的发送者,则后果可想而知.
上面介绍了Sendmail控制mail relay的几个文件:
sendmail.cw
access
relay-domains
aliases
总结一下:
<< Sendmail 怎样才会 relay your mail? >>
条件一: 发送者是被允许的发送者:
这要看文件/etc/mail/relay-domains或者/etc/mail/access两文件中列出的域名和IP地址行,对IP地址,就检查发送者的IP地址是否允许,若不符合,且有域名在里面,则检查/etc/hosts和正反向DNS
解析看是否有对应记录,看反向解析出来的域名是否符合条件.
条件二: 本地/被允许的接收者.
同样地是要看/etc/mail/relay-domains或者/etc/mail/access文件,看接收者邮件地址的域部分是否列在上述两文件中,另外还多一项检查文件就是sendmail.cw,列在该文件中的域名被认为是本地接收者.检查别名文件进行扩展.
其它情况都拒绝relay.
第二部分 sendmail 配置文件
为了解释所有的配置文件,下面列出的M4源文件enable了所有的本书提到的配置文件如下:
=====================================
include(`../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’)
define(`ALIAS_FILE’,`/etc/mail/aliases’)
define(`confPRIVACY_FLAGS’,`authwarnings,needmailhelo,noexpn,novrfy’)
FEATURE(`smrsh’,`/usr/sbin/smrsh’)
FEATURE(`mailertable’,`hash -o /etc/mail/mailertable’)
FEATURE(`virtusertable’,`hash -o /etc/mail/virtusertable’)
FEATURE(`domaintable’,`hash -o /etc/mail/domaintable’)
FEATURE(`genericstable’,`hash -o /etc/mail/genericstable’)
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain’)
FEATURE(allmasquerade)
FEATURE(masquerade_envelope)
MASQUERADE_AS(mydomain.com)
FEATURE(redirect)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
FEATURE(access_db)
FEATURE(`blacklist_recipients’)
========================================
所有的配置文件如下:
/etc/mail/mailertable
/etc/mail/domaintable
/etc/mail/genericstable
/etc/mail/genericsdomain
/etc/mail/virtusertable
我们以上面图二中的最左边的上海部分的网络结构为例子来说明上面五个配置文件的适用规则和用法.你不用在意我举的例子中的网络环境,不管举什么例子,你只要搞懂了各个文件的在什么情况下适用就行.
重新画图如下:
—————–Internet—————–
| (1.2.3.4)
[SMTP server] sh.abc.com
| (192.168.11.5)
|
| jephe.abc.com(192.168.11.12)
_____|_____________________[myPC]______[shmail](192.168.11.1)____
[shanghai internal LAN] shmail.abc.com
(图三)
/etc/mail/virtusertable用法
1.假如在sh.abc.com上/etc/sendmail.cw中有下面两行:
public.sta.net.cn
sh.abc.com
且/etc/mail/aliases中有下面两行(假定/etc/sendmail.cf中路径为/etc/mail/aliases)
admin:jwu@sh.abc.com
jwu:jwu@yahoo.com
则当从[myPC]发送邮件到admin@public.sta.net.cn (outgoing server:sh.abc.com)时.这封信最终被发往哪里去了?
===>答: 一般情况下,最终应被发送到jwu@yahoo.com信箱中.为什么?
因为经过了两次别名检查.最后yahoo.com不在/etc/sendmail.cw文件中,故不再检查别名.直接发送到jwu@yahoo.com.
2.但不完全如此,在下面的情况下有例外(并非一定要做别名检查到底的).
若在/etc/mail/virtusertable中有下面的行
@sh.abc.com %1@[192.168.11.1]
且 /etc/sendmail.cw中有
sh.abc.com
且/etc/mail/aliases中有一行
jwu: wat@yahoo.com
则发到jwu@sh.abc.com的信是解析到wat@yahoo.com还是jwu@[192.168.11.1]呢?
====>答: 解析到jwu@[192.168.11.1]
再来看个例子:
3.若还是上面的图三, /etc/mail/virtusertable 中有
@sh.abc.com %1@[192.168.11.1]
/etc/sendmail.cw中有
sh.abc.com
public.sta.net.cn
/etc/mail/aliases中有:
admin:jwu@sh.abc.com
jwu:wat@yahoo.com
则发到admin@public.sta.net.cn的信最终被交到哪里wat@yahoo.com还是jwu@[192.168.11.1]?
===>答: jwu@[192.168.11.1]
结论:
a.当接收者邮件地址的域部分在/etc/sendmail.cw中又在/etc/mail/virtusertable中时,优先检查virtusertable文件,应用该文件中的定义规则.(例子2)
b.要应用virtusertable规则,则接收者邮件地址的域部分必须在/etc/sendmail.cw文件中存在(例子2和3)
c.若接收者邮件地址的域部分在/etc/sendmail.cw文件中但不在virtusertable文件中有相应的定义则先只应用sendmail.cw中的定义去扩展别名,一旦扩展出的别名接收者邮件的域部分在virtusertable中有定义行时则决不再别名下去,马上运行virtusertable中的定义规则(例子3)
/etc/mail/mailertable用法
跨越DNS的MX的记录,优先于MX记录,可以与MX记录指定的主机设定不同.
4.如果 /etc/mail/mailertable有
sh.abc.com relay:[192.168.11.1]
且/etc/sendmail.cw中有
sh.abc.com
且/etc/mail/virtusertable中有
@sh.abc.com %1@[192.168.11.1]
则发到jwu@sh.abc.com的信去向是哪里?
===>答: 运用virtusertable规则,转变为jwu@[192.168.11.]后再发送到内部主机shmail
但a.如果没有/etc/mail/virtusertable则查找本地别名文件
b.如果/etc/sendmail.cw也没有或为空,则检查/etc/mail/mailertable发送到 jwu@sh.abc.com的信到内部主机shmail(192.168.11.1)
注:转变为jwu@[192.168.11.1]再发送和把发往jwu@sh.abc.com的信发到192.168.11.1主机是不一样的概念. 如果从邮件头信息来看,则前者是received by shmail[192.168.11.1] for jwu@[192.168.11.1];而后者是 received by shmail[192.168.11.] for jwu@sh.abc.com
结论:
a. 优先级顺序是virtusertable>sendmail.cw>mailertable>DNS MX记录
b. mailertable的运用不需要接收者邮件地址的域部分在sendmail.cw中存在.
c. mailertable用来跨越DNS,优先于DNS的MX记录.
/etc/mail/domaintable 用法在任何情况下,domaintable都是最优先检查的,作用有二:一主要是防止对自己公司的域名的误打,
二是对自己公司新旧域名的替换。例子5如下:
5. 若/etc/mail/domaintable中有yahoo.com sh.abc.com
且/etc/sendmail.cw中有sh.abc.com
且/etc/mail/virtusertable中有@sh.abc.com %1@[192.168.11.1]
且/etc/mail/mailertable中有 sh.abc.com relay:[192.168.11.1]
则发到jwu@yahoo.com的信最后发到哪里去了。
===> 转变为jwu@[192.168.11.1].
因为首先检查domaintable文件,jwu@yahoo.com被进行域替换为jwu@sh.abc.com.然后发现sh.abc.com在/etc/sendmail.cw中且在virtusertable中,则优先检查virtusertable中的规则转变邮件地址为jwu@[192.168.11.1]
假如上面的情况下,/etc/sendmail.cw中没有sh.abc.com行,则被域替换后则去检查mailertable中的规则,然后发送邮件地址jwu@sh.abc.com到192.168.11.1服务器。
无论在哪里情况下(指mailertable还是virtusertable),最后收件人收到信后检查邮件头信息时,在message header中的to:行都是jwu@sh.abc.com. 你在message header中找不到任何jwu@yahoo.com的信息,但在message envelope中的第一个received行中有jwu@yahoo.com的记录。
结论:
1.无论什么时候,domaintable都是优先检查,且没有任何附加条件,无条件检查,与sendmail.cw中是否有某域名无关。
2.一般地用来做域名更换,假如你的公司@abc.com可能被员工误打为abd.com,则放入下面的行到
/etc/mail/domaintable
abd.com abc.com
/etc/mail/genericstable and /etc/mail/genericsdomain 的用法
作用: 重写发送者邮件地址,考虑下面的图四:
[PC]A (jwu)
|
| C PPP Link
_____LAN_______________[SMTP/POP3 server]——- ISP——-Internet
| jwu@domain.com @isp.net
| tom@domain.com jephe@isp.net
[PC]B (tom) tomyh@isp.net
(图四)
考虑上面的情况,在公司LAN上有两台PC,A 和 B.在内部的邮件服务器C上的帐号分别为jwu@domain.comtom@domain.com,通过PPP方式连入ISP,且两个人在ISP上各自有自己的邮件地址jephe@isp.nettomyh@isp.net.现在需要做到:
如果jwu要发送一个封件给tom,则希望被服务器C收到并直接在本地交付给B,且发送者邮件地址为jwu@domain.com,但若jwu要发送一个信给外部互联网上某用户,则希望被对方收到后的发送者邮件地址为jephe@isp.net,即在ISP上的邮件帐号。
====》则需要服务器C上的Sendmail能做到这一点。这就要用到genericstable 和genericsdomain.在下面的条件同时满足时才能做到。
先考虑不管是发送给tom还是互联网上某用户都更改为jephe@isp.net的情况:
1. jwu在自己的PC A机上的Outlook Express中设置客户端邮件地址为jwu@domain.com
2. 服务器C在/etc/mail/genericstable中设置下面的行
jwu jephe@isp.net
3. 服务器C在/etc/mail/genericsdomain中有下面的行
domain.com
上述三个条件同时满足时,则jwu向C发信给任何人时,发送者邮件地址都重写为jephe@isp.net,同样的情况应用于tom.
假如要求发送给本地用户如tom时发送者邮件地址为jwu@domain.com,则没有基于M4的解决方案,你需要找到/etc/sendmail.cf中的下面行删除两行。
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
再举个例子,考虑下面的图五
_______________[SMTP Server]_______DDN_Link_____Internet
(图五)
在SMTP服务器上设置下面的:
/etc/mail/genericstable
jwu jwu@sources.com
/etc/mail/genericsdomain
test.com
如果该SMTP服务器从互联网上收到一封发送者邮件地址为jwu@test.com的信,则发送者邮件地址被重写为jwu@sources.com,且message envelope中的return address也是jwu@sources.com
结论:
a.当发送者邮件地址的用户部分和域部分被分别列在/etc/mail/genericstable和/etc/mail/
genericsdomain两个文件中时,发送者邮件地址被重写为/etc/mail/genericstable中被定义的
邮件地址.
b.不管是从局域网发进来的还是从互联网上进来的,只要是经过Sendmail服务器处理时就检查规则
第三部分 Sendmail Masquerading
常用的几个伪装规则:
1.MASQUERADE_AS(yourdomain.com)
2.FEATURE(allmasquerade)
3.FEATURE(masquerade_envelope)
4.MASQUERADE_DOMAIN(mydomain.com)
5.FEATURE(masquerade_entire_domain)
MASQUERADE_AS(yourdomain.com) 指出其它所有的伪装规则起作用后伪装成哪个域名。
默认情况下仅伪装from:行和reply to:行的邮件地址.
FEATURE(allmasquerade) 伪装message header中的to:地址
FEATURE(masquerade_envelope) 伪装message envelope部分的return address,当不能交付邮件并退回给发送者时会用到该地址.
问题一:伪装在什么情况下发生?
当下列条件同时满足时实现伪装:
a. 客户端Outlook Express中的地址的域部分在/etc/sendmail.cw文件中,即为本地域.
b. 客户端直接发送邮件到sendmail服务器或者是sendmail服务器收到某个从互联网进来的邮件,但from行指出的发送者邮件地址的域部分在/etc/sendmail.cw中也就是只要经过了这台Sendmail邮件服务器的话,
=====>然后伪装发送者邮件地址的域部分为 MASQUERADE_AS(yourdomain.com) 中指定的域
yourdomain.com
举个例子:
如果/etc/sendmail.cw中有一行
yahoo.com
且设置了MASQUERADE_AS(domain.com)
且发送者客户端设置了邮件地址为 jwu@yahoo.com.则经过了这台装有Sendmail的SMTP服务器时,发送者邮件地址被重写成jwu@domain.com
如果接收者是jwu@yahoo.com,且设置了FEATURE(allmasquerade),则也重写接收者地址为jwu@domain.com
再举个例子:
如果MASQUERADE_AS(domain.com)被设置了,且设置了MASQUERADE_DOMAIN部分,则伪装整个域中
的所有主机。例如设置了如下:
MASQUERADE_AS(masq.com)
MASQUERADE_DOMAIN(foo.org)
MASQUERADE_DOMAIN(bar.com)
FEATURE(masquerade_entire_domain)
则*foo.org和*bar.com都被转化为masq.com,否则只有foo.org和bar.com被转化为masq.com.
第四部分 常见问题处理方法
1. 我有一个用户离开了公司,但仍然收到许多关于他/她的邮件,我怎么让别人知道此人已经使用新的邮件地址.
===>加下面的行到M4宏配置文件中
” FEATURE(`redirect’)dnl ”
然后加下面的行到aliases文件中olduser: him@new.address.REDIRECT
所有发到旧的邮件地址的人将收到一个新邮件地址的通知消息.
2.为什么我更改了上面各种配置文件后仍然不起作用?
在任意配置文件更改后都要运行makemap,例如:
#makemap hash mailertable < mailertable
但是对于sendmail.cw和relay-domains文件的更改要用下面的命令重启Sendmail
#killall -HUP sendmail
对aliases文件的更改要运行
#newaliases
3. 我按要求配置了所有的文件,发现我仍然不能发送邮件.为什么?
首先保证你的Sendmail后台正在运行.用#ps -aux | grep sendmail检查若在运行,再检查看你能否#telnet mailserver 25.若仍不能看能否#ping mailserver 注意:sendmail连接在TCP的端口25上进行,且TCP连接是双向的,你要检查路由表,看能否对进来的一个TCP连接产生的回复包能正确地沿相反方向回复给发送者.
4.我怎么检查一封邮件的发封过程?
在Sendmail邮件服务器上执行下面的命令.
# echo testing | /usr/sbin/sendmail -v someone@somedomain.com

穷人搬家真累。。

rt..

穷人只能采取蚂蚁搬家的方式转移仅有的一些了色玩意。。

从上周末找好房,到这刚刚为止,算是告一段落了。这一周过的真叫累,每晚都要搬一部分。。下五楼、走几百米、再爬十楼……  前前后后搬了估计有十五六趟

nnd做穷人真难啊,为了做一个能请得起搬家公司的穷人而奋斗!为了第一套房子努力!

希望这里是我租房的最后一站!!

清明厦门行第一天

 第一天是按照原来安排的行程进行,鼓浪屿。

5点钟起床

5点20出发,半路接上明王子和他gf然后一路向机场奔去

一路顺畅,提前1个小时倒了机场,然后取登机牌再就是等。。。

机场在下小雨,起飞后很快看到蓝天了

刚到鼓浪屿时有些雾,可见度不是很好拍出来的照片都感觉朦朦胧胧- -

先每人花18大洋坐船环绕鼓浪屿转了一周,40分钟,然后下船上岛。

岛上游人不是很多。岛上禁止机动车,也不让骑自行车,一路走去见到很多老别墅。心想,这些个的老财主们可真享受啊。

少了现代化的排污工具,岛上空气异常清新,路面、伸出墙外的花朵树叶一尘不染。完全没有积尘的破旧感。走在深邃的巷子有点乌镇的感觉……

000e07e60fbd347cd46024f5659

天很蓝云很白

明王子带的东西太多,下了机还是先去见人家。见人家真不赖哈 :D

 

 

第一站轮渡

第一站轮渡

有点雾,不过天还是很蓝,还也很蓝

有点雾,不过天还是很蓝,还也很蓝

渡往鼓浪屿

渡往鼓浪屿

岛上的旅游图

岛上的旅游图

荒废的老宅子,岛上类似的老别墅很多哈

荒废的老宅子,岛上类似的老别墅很多哈

郑成功雕像:(ps: 头顶上还有根避雷针.. 囧....)

郑成功雕像:(ps: 头顶上还有根避雷针.. 囧....)

哈哈,岛上的人们还很幽默嘛。。

哈哈,岛上的人们还很幽默嘛。。

N大两只苹果核。。

N大两只苹果核。。

岛上的海滨,这段沙滩质量不行。。

岛上的海滨,这段沙滩质量不行。。

到家了,清明厦门游结束

3天的行程over。晚上9点40到家,现在感觉浑身都疼啊,

好久没有这样运动量,一下子难以适应啊。有些透支。。。

估计这一个星期的睡眠质量会比较好,不能说了,洗洗睡吧先。。

改天再来发几张照片,继续俗一把

晚安。。

chi.mp开放注册了!免费顶级域名

00092f9ff3fd5babde07d1e71a5

chi.mp很强悍。。 免费的顶级域名,不过免费使用时没有域名控制权,只能使用chi.mp免费的服务,功能页很强大全面。集成了rss、twitter、facebook、flickr等服务,提供博客、相册、联系人管理等等服务。如果你想拥有域名控制权只需要付费20刀即可把免费抢注的域名收入囊中,续费应该也是$20/year。在邀请期同事抢到tudou.mp 囧…

由于.mp与中文的“名片”一词相对,因此还是有一些优势的,本人在邀请期抢注了http://zhys9.mp/不过没怎么用,呵呵,每次上去都只是看一看有没有生成邀请码。不过现在看来没必要再去看了,因为开放注册了……

有兴趣的朋友快点去看看吧,抢注一个属于自己的域名吧:)

官方地址: http://chi.mp

2009年的愚人节

感觉今年的愚人节比起往年平静了不少,今年遇到的恶搞比往年少了很多。创建和谐社会、文明网络初见成效啊!

先说说今年愚人节遇到的恶搞吧。

1,由腾讯发起的javascript脚本恶搞,好在不是死循环的alert 大概240+下之后就结束了。

素材及地址为:“陈冠希今天早上6点30分在家中自杀,详情请看                 http://joke.qq.com/z/blue/200741/gnjggs.htm ”

呵呵,相信大多数人收到的都是这个版本,其次有几个变种的素材。类似广东7天假恢复等等

2,群成员被踢,最后显示“您已被管理员请出了群”之类的文字

这一个比较具有欺骗性,可惜我第一次看到时就被骗到了 - -#

下面贴几个版本吧,第一个是我首次见到的版本,至于哪个是初版,也无从考证了。还有几个版本找不到了,不过大体上都差不多。。

i:

 

555eca2d61f7b878228314e1522

ii:

666c6fa8d1e9067e83d40341723

iii:

777c825bfeeeba92f0b2cf5342d

3,一个format c:的屏保程序

一平发给我的,打包名为“游戏.rar”解压出来是“游戏.exe”不过看图标应该是winrar打包成的exe,再解压原来是一个屏保程序。因为今天是愚人节,所以遇到exe的文件需要执行时总是比较慎重的 :D~ 虽然这个程序完全没有恶意~~

4,“飞行酒店”

相比前两天还在各大新闻门户的推介中见到这条新闻,难道这个也是愚人节的闹剧?哈哈,没错!这个比较强,范围够广(全球性质的)。而且搞的煞有其事,还建立了官网http://hotelicopter.com/

援引:据英国《每日电讯报》4月1日报道,一段精心策划的“飞行酒店(Hotelicopter)”视频恶作剧日前红透了互联网并戏弄了不少点击者。在这个时长37秒的视频中,人们可以看到世界上第一个也是唯一的“飞行酒店”在空中翱翔,同时听到这样的画外音——“五星级酒店终于起飞了,这在航空史上还是第一次。感受奢华,提升品位,尽在飞行酒店”。
下面是插图:

888c335c0f8ca0d462dd9f9fdb1

房间内景

飞行中的“五星级酒店” - -#

飞行中的“五星级酒店” - -#

清明节出游计划

3.28我们节日,正好也赶上清明放假。在年初我就在打算着出游计划,按我原来的计划是去云南,正好上周明王子问要不要去厦门,正好可以去贱人家蹭吃蹭住。很好,就去厦门了!

说时迟那时快,上周四晚上把机票先订下了。说到这里不得不再骂一下民航,tmd贵!

说一下到厦门的行程安排:

第一天拿下鼓浪屿,晚上回去烤鱼啊
第二天万石植物园风景区,晚上地主带路品小吃
第三天南普陀景区+其他看时间再定,下午5点赶去机场

由氧化钙得来的一点感触

先科普一下:
 

氧化钙

氧化钙

       中文名称: 氧化钙
  英文名称: calcium oxide
  别 名: 生石灰
  分子式: CaO 外观与性状 白色无定形粉末,含有杂质时呈灰色或淡黄色,具有吸湿性
  分子量: 56.08 沸 点 2850℃
  熔 点: 2580℃ 溶解性 不溶于醇,溶于酸、甘油
  密 度: 相对密度(水=1)3.25~3.38g/cm3
  稳定性: 稳定
  危险标记: 20(碱性腐蚀品) 主要用途 用于建筑,并用于制造电石、液碱、漂白粉和石膏。实验室用于氨气的干燥和醇的脱水等
  用 途: 氧化钙用于钢铁、农药、医药、非铁金属、肥料、制革、制氢氧化钙,实验室氨气的干燥和醇脱水等

  氧化钙还可通过与水反应来产生大量的热,常用于自动加温包装。虎门销烟时,当时林则徐一为防止废气,二为避免鸦片污染土壤,就采用向水中加入鸦片和氧化钙的方法来分解鸦片。

  工艺流程 碳酸钙加盐酸→酸解→加氨水中和→静置沉淀→过滤→加碳酸氢钠反应→碳酸钙脱水→干燥→煅烧→筛选→包装→氧化钙

写在这里:

为什么会想到氧化钙?还要说起同事转来的一条评论:
“第10楼 匿名人士 发表于 2009-03-27 20:22:38
氧化钙他母亲的,老子在深圳一个月也吃不了这么多。”

说道这里知道为什么了吧?呵呵,如果还不清楚继续看吧。。 就是它那和谐的化学式“CaO”,就宛如“河蟹”“水产”“俯卧撑”“打酱油”“躲猫猫”等等般 和谐。

刚开始我把这个化学式都给写错了。。 Ca2O - -#“` 我对不起化学老师了。。看上去有点不对,然后回忆(好在还记得)速记表:

“一价氢氟钠钾银;

二价氧钙钡镁锌

三铝四硅五价磷”

不妙,看来应该是“CaO”。

一直都是搞计算机方面的东西,知识面越来越窄了,以至于以往那么擅长的都已归还启蒙老师了……

NND,啥社会啊,

氧化钙!