Postfix的配置详解

4.1 postfix的配置文件结构

postfix的配置文件位于/etc/postfix下,安装完postfix以后,我们可以通过ls命令查看postfix的配置文件:

[root@mail postfix]# ls

install.cf main.cf master.cf postfix-script

这四个文件就是postfix最基本的配置文件,它们的区别在于:

mail.cf:是postfix主要的配置文件。

Install.cf:包含安装过程中安装程序产生的postfix初始化设置。

master.cf:是postfix的master进程的配置文件,该文件中的每一行都是用来配置postfix的组件进程的运行方式。

postfix-script:包装了一些postfix命令,以便我们在linux环境中安全地执行这些postfix命令。

4.2 postfix的基本配置

postfix大约有100个配置参数,这些参数都可以通过main.cf 指定。配置的格式是这样的,用等号连接参数和参数的值。如:

myhostname = mail.mydomain.com

等号的左边是参数的名称,等号的右边是参数的值; 当然,我们也可以在参数的前面加上$来引用该参数,如:

myorigin = $myhostname

虽然postfix有100个左右的参数,但是 postfix为大多数的参数都设置了缺省值,所以在让postfix正常为你服务之前,你只需要配置为数不多的几个参数。下面我们一起来看一看这些基本的postfix参数。需要注意的是,一旦你更改了main.cf文件的内容,则必须运行 postfix reload命令使其生效。

1. myorigin

myorigin参数指明发件人所在的域名。如果你的用户的邮件地址为user@domain.com,则该参数指定@后面的域名。缺省地, postfix使用本地主机名作为myorigin,但是建议你最好使用你的域名,因为这样更具有可读性。比如:安装postfix的主机为 mail.domain.com则我们可以这样指定myorigin:

myorigin = domain.com

当然我们也可以引用其他参数,如:

myorigin = $mydomain

2. mydestination

mydestination参数指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix系统要接收什么样的邮件。比如:你的用户的邮件地址为user@domain.com, 也就是你的域为domain.com, 则你就需要接收所有收件人为user_name@domain.com的邮件。与myorigin一样,缺省地,postfix使用本地主机名作为 mydestination。如:

mydestination = $mydomain

mydestination = domain.com

3. notify_classes

在postfix系统中,必须指定一个postfix系统管理员的别名指向一个用户,

只有这样,在用户遇到问题时才有报告的对象,postfix也才能将系统的问题报告给管理员。notify_classes参数就是用来指定向postfix管理员报告错误时的信息级别。共有以下几种级别:

bounce:将不可以投递的邮件的拷贝发送给postfix管理员。出于个人隐私的缘故,该邮件的拷贝不包含信头。

2bounce:将两次不可投递的邮件拷贝发送给postfix管理员。

delay:将邮件的投递延迟信息发送给管理员,仅仅包含信头。

policy:将由于UCE规则限制而被拒绝的用户请求发送给postfix管理员,包含整个SMTP会话的内容。

protocol:将协议的错误信息或用户企图执行不支持的命令的记录发送给postfix管理员。同样包含整个SMTP会话的内容。

resource:将由于资源错误而不可投递的错误信息发送给postfix管理员,比如:队列文件写错误等等。

software:将由于软件错误而导致不可投递的错误信息发送给postfix管理员。

缺省值为:

notify_classes = resource, software

4.myhostname

myhostname 参数指定运行postfix邮件系统的主机的主机名。缺省地,该值被设定为本地机器名。你也可以指定该值,需要注意的是,要指定完整的主机名。如:

myhostname = mail.domain.com

5.mydomain

mydomain参数指定你的域名,缺省地,postfix将myhostname的第一部分删除而作为mydomain的值。你也可以自己指定该值,如:

mydomain = domain.com

6.mynetworks

mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问。你可以用标准的A、B、C类网络地址,也可以用CIDR(无类域间路由)地址来表示,如:

192.168.1.0/24

192.168.1.0/26

7.inet_interfaces

inet_interfaces 参数指定postfix系统监听的网络接口。缺省地,postfix监听所有的网络接口。如果你的postfix运行在一个虚拟的ip地址上,则必须指定其监听的地址。如:

inet_interfaces = all

inet_interface = 192.168.1.1

4.3 postfix的UCE(unsolicited commercial email)控制

所谓UCE控制就是指控制postfix接收或转发来自于什么地方的邮件。

缺省地,postfix转发符合以下条件的邮件:

* 来自客户端ip地址符合$mynetworks的邮件。

* 来自客户端主机名符合$relay_domains及其子域的邮件。

* 目的地为$relay_domains及其子域的邮件。

缺省地,postfix接受符合以下条件的邮件:

* 目的地为$inet_interfaces的邮件。

* 目的地为$mydestination的邮件。

* 目的地为$virtual_maps的邮件。

但是我们也可以通过下面的规则来实现更强大的控制功能。

1. 信头过滤

通过header_checks参数限制接收邮件的信头的格式,如果符合指定的格式,则拒绝接收该邮件。可以指定一个或多个查询列表,如果新邮件的信头符合列表中的某一项则拒绝该接收邮件。如:

header_checks = regexp:/etc/postfix/header_checks

header_checks = pcre:/etc/postfix/header_checks

缺省地,postfix不进行信头过滤。

2.客户端主机名/地址限制

通过smtpd_client_restrictions参数限制可以向postfix发起SMTP 连接的客户端的主机名或ip地址。可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:

reject_unknown_client:如果客户端的ip 地址在DNS中没有PTR记录则拒绝转发该客户端的连接请求。可以用 unknown_client_reject_code参数指定返回给客户机的错误代码(缺省为450)。如果你有用户没有作DNS记录则不要启用该选项。

permit_mynetworks:如果客户端的ip地址符合$mynetworks参数定义的范围则接受该客户端的连接请求,并转发该邮件。

check_client_access maptype:mapname:根据客户端的主机名、父域名、ip地址或属于的网络搜索access数据库。如果搜索的结果为REJECT 或者 ‘[45]XX text’ 则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY 或数字则接受该客户端的连接请求,并转发该邮件。。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为 554)。

reject_maps_rbl:如果客户端的网络地址符合$maps_rbl_domains参数的值则拒绝该客户端的连接请求。可以用maps_rbl_reject_code参数指定返回给客户机的错误代码(缺省为554)。

示例:

smtpd_client_restrictions = hash:/etc/postfix/access, reject_maps_rbl

smtpd_client_restrictions = permit_mynetworks, reject_unknown_client

该参数的缺省值为:

smtpd_client_restrictions =

也即接收来自任何客户端的SMTP连接。

3. 是否请求HELO命令

可以通过smtpd_helo_required参数指定客户端在SMTP会话的开始是否发送一个HELO命令。你可以指定该参数的值为yes或no。缺省值为:

smtpd_helo_required = no

4. HELO主机名限制

可以通过smtpd_helo_restrictions参数指定客户端在执行HELO命令时发送给postfix的主机名。缺省地, postfix 接收客户端发送的任意形式的主机名。可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:

reject_invalid_hostname:如果HELO命令所带的主机名参数不符合语法规范则拒绝客户机的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为501)。

permit_naked_ip_address:RFC要求客户端的HELO命令包含的ip地址放在方括号内,你可以用permit_naked_ip_address参数取消该限制。因为有的mail客户端不遵守该RFC的规定。

reject_unknown_hostname:如果客户端执行HELO命令时的主机名在DNS中没有相应的A 或 MX 记录则拒绝该客户端的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为450)。

reject_non_fqdn_hostname:如果客户端执行HELO命令时的主机名不是RFC规定的完整的域名则拒绝客户端的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为504)。

check_helo_access maptype:mapname:根据客户端HELO的主机名、父域名搜索access数据库。如果搜索的结果为REJECT 或者 ‘[45]XX text’ 则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY 或数字则接受该客户端的连接请求。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为554)。

示例:

smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname

5. RFC 821信头限制

RFC 821对邮件的信头做了严格的规定,但是广泛使用的sendmail并不支

持该规定,所以对于该参数我们只能说不,即:

strict_rfc821_envelopes = no

6. 通过发件人地址进行限制

可以用smtpd_sender_restrictions参数通过发件人在执行MAIL FROM命令时提供的地址进行限制。可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:

reject_unknown_sender_domain:如果MAIL FROM命令提供的主机名在DNS中没有相应的A 或 MX 记录则拒绝该客户端的连接请求。可以用unknown_address_reject_code参数指定返回给客户机的错误代码(缺省为450)。

check_sender_access maptype:mapname:根据MAIL FROM命令提供的主机名、父域搜索access数据库。如果搜索的结果为REJECT 或者 ‘[45]XX text’ 则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY 或数字则接受该客户端的连接请求。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为554)。可以通过该参数过滤来自某些不受欢迎的发件人的邮件。

reject_non_fqdn_sender:如果MAIL FROM命令提供的主机名不是RFC规定的完整的域名则拒绝客户端的连接请求。可以用non_fqdn_reject_code 参数指定返回给客户机的错误代码(缺省为504)。

缺省地,postfix接受来自任何发件人的邮件。

示例:

smtpd_sender_restrictions = hash:/etc/postfix/access, reject_unknown_sender_domain

7. 通过收件人地址进行过滤

可以用smtpd_recipient_restrictions参数通过发件人在执行RCPT TO命令时提供的地址进行限制。缺省值为:

smtpd_recipient_restrictions = permit_mynetworks, check_relay_domains

可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:

check_relay_domains:如果符合以下的条件,则接受SMTP连接请求,否则拒绝该连接,可以用relay_domains_reject_code 参数指定返回给客户机的错误代码(缺省为504)。

* 客户端主机名符合$relay_domains及其子域

* 目的地为$inet_interfaces、$mydestination或$virtual_maps

permit_auth_destination:不管客户端的主机名,只要符合以下的条件,就

接受SMTP连接请求:

* 解析后的目标地址符合$relay_domains及其子域

* 解析后的目标地址符合$inet_interfaces、$mydestination或$virtual_maps

reject_unauth_destination:不管客户端的主机名,只要符合以下的条件,就拒绝该客户端SMTP连接请求:

* 解析后的目标地址符合$relay_domains及其子域

* 解析后的目标地址符合$inet_interfaces、$mydestination或$virtual_maps

check_recipient_access:根据解析后的目标地址、父域搜索access数据库。如果搜索的结果为REJECT 或者 ‘[45]XX text’ 则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY 或数字则接受该客户端的连接请求。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为554)。

reject_unknown_recipient_domain:如果收件人的邮件地址在DNS中没有相应的A 或 MX 记录则拒绝该客户端的连接请求。可以用unknown_address_reject_code参数指定返回给客户机的错误代码(缺省为450)。

reject_non_fqdn_recipient:如果发件人在执行RCPT TO命令时提供的地址

不是完整的域名则拒绝其SMTP连接请求。可以用The non_fqdn_reject_code参数指定返回给客户机的错误代码(缺省为504)。

4.4 posftfix的性能控制

之所以对postfix的性能进行控制,是为了在遇到邮件风暴时保证postfix可以正常运行。通常,我们可以通过对下列postfix 参数的配置来调节postfix的性能,这些参数都是通过mail.cf配置文件进行配置的,修改以后不要忘了运行postfix reload命令来使配置生效。

1. 进程数限制

可以通过default_process_limit 参数来控制postfix系统同时可以运行的最大进程数目。缺省值是50个。

2. 对同一目标主机的并发连接限制

当向同一目标主机发出SMTP连接时,postfix初始化发出两个SMTP连接,如果投递成功则增加并发的SMTP连接数目,遇到拥塞时又减少并发连接的数目。postfix中通过以下的参数对同一目标主机的并发连接进行控制:

* initial_destination_concurrency:控制对同一目标主机的初始化并发连接数目。缺省值为2。

* default_destination_concurrency_limit:控制初始化连接后对同一目标主机的最大并发连接数目。缺省值为10。

* local_destination_concurrency_limit:控制对同一本地收件人的最大同时投递的邮件数目。缺省值为2,因为对本地同一收件人投递邮件时投递工作只能一个接一个的进行,所以设得在大也没用。

3. 对同一封邮件的收件人数目限制

通过default_destination_recipient_limit参数来控制postfix的投递代理(如

smtp进程)可以将同一封邮件发送给多少个收件人。缺省值为50。也可以用明确指出该投递代理的参数来覆盖该缺省值。如用smtpd_recipient_limit来指定smtp投递代理可以将同一封邮件发送给多少个收件人,该参数的缺省值为1000。

4. 推迟投递控制

通过defer_transports参数,我们可以推迟投递该参数指定的邮件直到postfix明确的提出投递要求。下面我们看一个例子:

有一个小型的局域网,用户都将邮件发送给局域网内部的一台postfix邮件服务器,然后通过在该服务器上拨号将邮件发送出去。这时我们可以这样指定该参数的值:

defer_transports = smtp

该语句表示postfix推迟投递所有的邮件直到执行sendmail -q命令,这样我们就可以在ppp的脚本中加上sendmail -q,以便在拨号成功后让postfix开始投递邮件。

JS判断滚动条是否滚动到底部

一个判断滚动条是否滚动到底部的js。实际运用可以把clientHeight和scrollHeight放在方法外面,因为这两个值是不变的,没必要每次都进行计算。IE,FF,Opera,Chrome,Safari均可用。

function reachBottom() {

var scrollTop = 0;

var clientHeight = 0;

var scrollHeight = 0;

if (document.documentElement && document.documentElement.scrollTop) {

scrollTop = document.documentElement.scrollTop;

} else if (document.body) {

scrollTop = document.body.scrollTop;

}

if (document.body.clientHeight && document.documentElement.clientHeight) {

clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight: document.documentElement.clientHeight;

} else {

clientHeight = (document.body.clientHeight > document.documentElement.clientHeight) ? document.body.clientHeight: document.documentElement.clientHeight;

}

scrollHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);

if (scrollTop + clientHeight == scrollHeight) {

return true;

} else {

return false;

}

}

邮件信头中Return-Path、Reply-To和From的区别

1)The Return-Path (sometimes called the Reverse-Path or Envelope-FROM — all of these terms can be used interchangeably) is the value used during the SMTP session. As you can see, this does not need to be the same value that is actually found in the mail headers. Only the recipient’s mail server is supposed to add a Return-Path header to the top of the email. This records the actual Return-Path sender during the SMTP session. If a Return-Path header is already exists in the email, then that header is to be removed, and replaced by the recipient’s mail server.

All bounces that occur during the SMTP session should go back to the Return-Path value. Some servers may accept all email, and then queue it locally, until it has a free thread to deliver it to the recipient’s mailbox. If the recipient doesn’t exist, it should bounce it back to the recorded Return-Path value.

Note, not all mail servers obey this rule. Some mail servers will bounce it back to the FROM address.

2)The FROM address is the value actually found in the FROM header. This is supposed to be who the message is FROM. This is what you see as the “FROM” in most mail clients. If an email does not have a Reply-To header, then all human (mail client) replies should go back to the FROM address.

3)The Reply-To header is added by the sender (or the sender’s software). It is where all human replies should be addressed too. Basically, when the user clicks “reply”, the Reply-To value should be the value used as the recpient of the newly composed email. The Reply-To value should not be used by any server. It is meant for client side use.

go-pear.bat 出错不能执行解决方法

wamp go-pear.bat 出错不能执行解决方法
2010-09-02 16:53
Quote:
phar “C:\wamp\bin\php\php5.3.0\PEAR\go-pear.phar” does not have a signaturePHP W
arning: require_once(phar://go-pear.phar/index.php): failed to open stream: pha
r error: invalid url or non-existent phar “phar://go-pear.phar/index.php” in C:\
wamp\bin\php\php5.3.0\PEAR\go-pear.phar on line 1236

Warning: require_once(phar://go-pear.phar/index.php): failed to open stream: pha
r error: invalid url or non-existent phar “phar://go-pear.phar/index.php” in C:\
wamp\bin\php\php5.3.0\PEAR\go-pear.phar on line 1236
Press any key to continue . . .,

解决方法:

修改go-pear.bat(右键编辑把set PHP_BIN=php.exe下面那行替换成红色的部分)
如下:

@ECHO OFF
set PHP_BIN=php.exe
%PHP_BIN% -d phar.require_hash=0 ./PEAR/go-pear.phar
pause

之后保存就可以运行了。

该引进的是美国校车而不是悍马

当我们宣扬着孩子是国家的未来时,我们伟大的d做了什么?我们花着大把的纳税人的钱时?我们改善了什么?当校车是一个国家的特权车时,我想,未来的胜负已经决定了。
  
   在我们普通人眼中,美国是一个发达的国家,但是我想说的是发达的不仅是它的生产力,更是美国政府对每位美国国民的关爱、关注。
  
   在美国,你会时常看到这样的黄色大巴士每天接送学生穿梭于城市之间,它们每到一个下车地点首先要亮起警示灯,然后打开司机一侧靠马路中间的stop警示牌,同时车前会弹出一个横杆阻挡乱跑的学生,此时司机通过后视镜观看后方有无车辆后给带队老师一个手势后,带队老师才带孩子穿越马路。
  
   另外,当校车停下时,不论是校车后面的车辆还是对面行驶来的车辆均要停下车来,等学生过完马路后方可继续行驶,违者将处以严厉的交通法规严惩。记者曾采访司机,问到对这种等待是否接受,绝大部分的表示接受,不仅仅是因为交通法规的严惩,更重要的是能保证孩子们的安全,每个人都不希望自己的孩子遇到这样的违法者。
  
   第三,美国校车自身的安全的问题。美国校车自身也是非常出众的,由全球知名的汽车制造厂商制造,采用客车的外形,大货车的构架,曾有以彪悍著称的悍马越野车撞上school bus后整车基本报废,可见school bus之牛。
  美国是个装在轮子上的国家,每天在全国城乡跑的大小汽车有上亿辆,样子和颜色多得数不清。但在这么多的汽车中,惟独有一种车的颜色全国统一,样子也几乎一个模式,在所有的车辆中最好辨认,这就是校车。
    校车可以随时停
    美国的校车一律漆成黄色,模样不管大小,都是四四方方的箱式,看上去很古老,但也给人一种很稳重的感觉。每天在上学或放学时间,不时就能看到它不紧不慢地在街上行走。到了需要停下来的地方,司机把车身上“STOP”的牌子往外一扳,后面的车子就像看到红灯一样,都得停下来。等背书包的孩子上下完车,司机才把叫停的牌子扳回去,重新上路,这时其他车辆才敢跟着走。据记者观察,它是除了警车、救护车、消防车以外,在街道上最威风的车辆了。
    美国全国大约有4350万从幼儿园到十二年级的学生。其中54%坐校车上学,人数为2350万。接送这些孩子的校车有45万辆,每天每个孩子来回两次,全年接送孩子就达上百亿人次,行程35亿英里。这还不算每天平均有500万人次坐校车去参加各种活动。其实,美国人也真把校车当作一件大事来看待。联邦政府和各州都有专为校车制定的法律,总共有500多项;各州和全国性的组织也在关注校车的一举一动,每年各州都要开讨论校车的年会,每隔五年还要开一次全国大会;还有许多专门围绕校车进行各种新闻报道的报纸和杂志。
    校车是最安全的
    坐校车最大的好处是省钱、方便和安全。上公立学校的孩子坐校车不用交钱,私立学校学生交得也不多。这基本上是一种教育福利。美国孩子还是上公立学校的多,因此都能享受这项福利。美国每年要为一个学生坐校车支出493美元,这笔钱由政府教育经费开支。而教育经费一向是美国各级政府的主要财政支出,最舍得花钱。校车一般都根据学生居住的地点灵活设站,孩子上车离家都很近,大一点的孩子自己就可以去等车。另外一个就是安全。这是家长们最关心的问题,也是校车最大的特点。据统计,坐校车的安全系数是坐家庭轿车和公共汽车上学的40倍,即每年因坐校车伤亡的人数是坐一般车辆的1/40。事故率仅为每亿英里0.02次。
    要保证校车安全并不容易,这是家长们几十年孜孜不倦关心安全问题,讨论安全问题,促使政府不断修改校车标准和要求,才达到的程度。就拿校车的颜色来说,早在1939年就立法规定一律为黄色,因为这是最醒目,即便在大雾中也最容易看清的颜色,因此也是最安全的颜色。法律还规定,小的校车因为受到冲撞容易出事,因此在它的每个位置上都装有三叉安全带,大校车虽然比较安全,并在座位上装配了防撞安全装置,但现在纽约和新泽西等州也开始要求设有安全带。校车对司机也有严格的要求。孩子上下车司机要核对名字,不得疏漏。曾经有位司机送孩子回家时,有一个孩子在车上睡着了,到家没有下车,直到一个多小时后司机才发现车上还睡着孩子。这个司机因此被开除。校车司机当然也不能开快车,或有其他违反交通规则的行为。条例规定,一个司机如果在四年内罚单超过三张,就不能当校车司机。学校也同时向家长和孩子免费发放宣传册和录像带,教育他们如何安全坐车。有的学校还给教师增加10%的工资,要求他们放学时送孩子上车。美国关心校车的组织还专门研究孩子坐车出事的原因,发现每星期前三天是最容易出事故的日子,而且出事绝大多数发生在回家的时候,而不是上学的时候,这样就能找到防止出事故的有效办法。“9·11”事件以后,美国政府和学校、家长都更重视校车的安全。因此立法规定,将校车纳入政府反恐怖安全监视系统的保护范围。任何对校车的攻击都将定为联邦罪行,要判20年至终身监禁。在多种措施的共同保证下,校车自然成为美国最安全的交通工具。
    校车是一项产业
    美国的校车虽专为学校服务,却采取商业经营的办法。以纽约为例,由政府的教育委员会规定路线,招标拍卖经营权,与私人校车公司签订合同,学校和学区只负责监督安全和制定校车运行规则。这样既引进竞争机制,使服务质量得到保证,学校也没有额外负担。这些私人校车公司一般都不大,都是地方性企业。但也有一定的规模,能保证车辆的维修和司机的培训。如纽约的学校交通公司有30多年历史,650辆车,建立了两个维修车间。它竞争到了800条线路,还有其他接送孩子参加活动的服务。由于这些生意非常稳定,因此公司只要加强安全服务,保持合同,就有很好的营业收入。美国每年还要新生产4.6万辆校车,这也是一笔不小的生意,加上专为其服务的修理、配件制造,形成了一个每年有150亿美元产值的“校车产业”。这是美国校车得以存在和不断发展的原因。▲

温馨停车,安心上学
schoolbus
schoolbus2
schoolbus3
美国人对教育重视到什么程度呢?这从美国的校车服务可见一斑。
  
  早在19世纪末,美国乡村就出现了专门接送孩子上下学的校车,只不过那个时候的校车是马车,屈指一算,美国校车已经有100余年的历史了。
  
  如今,美国已经形成了联邦、州以及当地政府三级共同管理的校车服务机制,校车服务是义务教育的重要组成部分。在美国,家住在离学校1英里约1.6公里外的学生,都可以免费搭乘校车。美国对校车的制造规定了许多严格的标准,比如:
  
  校车行人安全装置:标准要求校车停车时,左侧伸出“停止手臂”的装置,以警示校车前后的其他车辆,减少过往车辆伤害到附近学生的可能性。
  
  校车翻滚保护:此标准要求校车顶部有足够的强度,以便校车在翻滚事故中车顶能够承受更多力量,降低学生伤亡数量及受伤严重程度。
  
  校车车身连接部分强度:此标准要求校车车身钢板具有相当的强度,目的是为了降低校车在遇到车身碰撞事故时遭受结构性毁坏而给车内学生带来伤害。
  
  校车还必须安装减速制动装置,以便有效减少因急刹车导致的严重伤亡事故。
  
  这些严格的标准,让所有校车均为“客车的设施,卡车的骨架”,充分保证了校车的坚固性和安全性。这是必要的,因为校车承担着学生安全的重任,承载着国家的未来和希望。重视校车,就是重视学生,重视教育。一个重视教育的国家,怎么会不先进呢?
  
  每天清晨和下午,一辆辆橘黄色的校车奔走在美国城乡,为美国学生,为美国教育提供服务,给学生和家长带去实实在在的关怀和体贴。美国人认为,上学接受教育是个人的事,也是国家的责任。目前,美国大约有45万辆校车,全美国大约有2500万学生乘校车上下学,如果按照每天每个孩子来回乘两次计算的话,那么校车全年接送孩子达上百亿人次。从校车出现的一百余年算起呢?
  
  校车真是为美国教育立下了汗马功劳。

发布一个原创分页带表格的PHP类

带表格输出的分页PHP类 (87)

/*
* 直接输出数据表和分页信息
* 在新建对象时需要的变量:$query(从数据表中获取记录数的sql语句),$page(当前页码),$maxline(每页几行))
* 1、showpage方法:如果上面创建对象的$query正确,直接调用,即可输出分页信息
* 2、showtable方法:需要的变量:$query(从数据库读取记录的SQL语句,不要加Limit,因为在方法中已经添加)
* 直接输出

的表格,所以只需在前后加上

就是完整的表格
* 3、showresult方法:根据提交的$query中的SQL,直接将$result资源返回,表格可以自己定义
* 示例:
//获取当前页,并定义每页最大行
//$page=1;
//$maxline=”10″;
//if(!empty($_GET["page"])){
// $page=$_GET["page"];
//}
//定义计算表内数据总数的SQL语句,这里必须和下面的$query是同一个表和条件,创建对象,输出页码和表格
//$query=”select count(*) from mailbox”;
//$a=new PageList($query, $maxline, $page);
//$a->showpage();
//这里显示列表,需要和上面的SQL语句一样的条件
//$query=”select username,name,quota,created,modified,active from mailbox order by created desc”;
//echo “

“;
//$a->showtable($query);
//echo “

“;
* */

htaccess 文件10个设置技巧

引导线网页制作网提示您:.htaccess文件 (Hypertext Access file) 是Apache Web服务器 的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能。.htaccess 配置文件坚持了Unix的一个文化使用一个ASCII 的纯文本文件来配置你的网站的访问策略。

.htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能。.htaccess 配置文件坚持了Unix的一个文化——使用一个ASCII 的纯文本文件来配置你的网站的访问策略。

这篇文章包括了16个非常有用的小技巧。另外,因为.htaccess 是一个相当强大的配置文件,所以,一个轻微的语法错误会造成你整个网站的故障,所以,在你修改或是替换原有的文件时,一定要备份旧的文件,以便出现问题的时候可以方便的恢复。

1. 使用.htaccess 创建自定义的出错页面。对于Linux Apache来说这是一项极其简单的事情。使用下面的.htaccess语法你可以轻松的完成这一功能。(把.htaccess放在你的网站根目录下)

ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

2. 设置网站的时区

SetEnv TZ America/Houston

3. 阻止IP列表
有些时候,你需要以IP地址的方式阻止一些访问。无论是对于一个IP地址还是一个网段,这都是一件非常简单的事情,如下所示:

allow from all
deny from 145.186.14.122
deny from 124.15

Apache对于被拒绝的IP会返回403错误。

4. 把一些老的链接转到新的链接上——搜索引擎优化SEO

Redirect 301 /d/file.htmlhttp://www.htaccesselite.com/r/file.html

5. 为服务器管理员设置电子邮件。

ServerSignature EMail
SetEnv SERVER_ADMINdefault@domain.com

6. 使用.htaccess 访止盗链。如果你网站上的一个图片被别的N多的网站引用了,那么,这很有可能会导致你服务器的性能下降,使用下面的代码可以保护某些热门的链接不被过多的引用。

Options +FollowSymlinks
# Protect Hotlinking
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?domainname.com/[nc]
RewriteRule .*.(gif|jpg|png)$http://domainname.com/img/hotlink_f_o.png[nc]

7. 阻止 User Agent 的所有请求

## .htaccess Code :: BEGIN
## Block Bad Bots by user-Agent
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]

Order Allow,Deny
Allow from all
Deny from env=bad_bot

## .htaccess Code :: END

8. 把某些特殊的IP地址的请求重定向到别的站点

ErrorDocument 403http://www.youdomain.com
Order deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123

9. 直接找开文件而不是下载– 通常,我们打开网上文件的时候总是会出现一个对话框问我们是下载还是直接打开,使用下面的设置就不会出现这个问题了,直接打开。

AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov

10. 修改文件类型– 下面的示例可以让任何的文件都成为PHP那么被服务器解释。比如:myphp, cgi,phtml等。

ForceType application/x-httpd-php
SetHandler application/x-httpd-php

11. 阻止存取.htaccess 文件

# secure htaccess file

order allow,deny
deny from all
12. 保护服务器上的文件被存取

# prevent access of a certain fileorder allow,deny
deny from all
13. 阻止目录浏览

# disable directory browsing
Options All -Indexes

14. 设置默认主页

# serve alternate default index page
DirectoryIndex about.html

15. 口令认证– 你可以创建一个文件用于认证。下面是一个示例:

# to protect a file

AuthType Basic
AuthName “Prompt”
AuthUserFile /home/path/.htpasswd
Require valid-user

# password-protect a directory
resides
AuthType basic
AuthName “This directory is protected”
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user

16. 把老的域名转像新的域名

# redirect from old domain to new domain
RewriteEngine On
RewriteRule ^(.*)$http://www.yourdomain.com/$1[R=301,L]

理解Exchange 2010 OWA中的Role Assignment Policy

Exchange 2010中引入RBAC权限模型之后,为我们日常的管理带来了不少方便之处。尤其是在Exchange 2010 SP1中,Management Role相关的配置直接可以在ECP中进行操作。

我在这里想讲一点是关于Role Assignment Policy相关的内容。在Exchange 2010中,Role Assignment Policy是给单个或一批用户设置的权限方式。Exchange 2010安装之后,有一个默认的”Default Role Assignment Policy”,不论是启用邮箱(Enable-Mailbox)还是新建邮箱(New-Mailbox),都会把这个默认的Policy作为每个邮箱默认值。在这个默认的Policy中,允许用户操作的内容(Role)包括:

MyBaseOptions
MyContactInformation
MyVoiceMail
MyTextMessaging
MyDistributionGroupMembership
MyDistributionGroups

相关命令为:

(Get-RoleAssignmentPolicy -Identity “Default Role Assignment Policy”).AssignedRoles

每项内容(Role)可以进行的操作,可以通过相应的命令查看,比如查看MyBaseOptions中包括的操作:(Get-ManagementRole mybaseoptions).RoleEntries

Exchange 2010中针对Role Assignment Policy的Role,还不至这少,完全的应该是:

PS C:\> Get-ManagementRole my* | Format-Table -AutoSize

Name RoleType
—- ——–
MyAddressInformation MyContactInformation
MyBaseOptions MyBaseOptions
MyContactInformation MyContactInformation
MyDiagnostics MyDiagnostics
MyDisplayName MyProfileInformation
MyDistributionGroupMembership MyDistributionGroupMembership
MyDistributionGroups MyDistributionGroups
MyMobileInformation MyContactInformation
MyName MyProfileInformation
MyPersonalInformation MyContactInformation
MyProfileInformation MyProfileInformation
MyRetentionPolicies MyRetentionPolicies
MyTextMessaging MyTextMessaging
MyVoiceMail MyVoiceMail

底色为绿的表示包括在”Default Role Assignment Policy”中。

其中,MyBaseOptions是最关键的一条,如其名称所示,是base。所有新建的Role Assignment Policy必须包括这一条,若没有这一条,而分配了其他权限,那用户仍然不可以访问,而本质上,MyBaseOptions是OWA用户登录之后,进入“选项”菜单所必须的,也就是说,用户所指定的Policy上若不包括MyBaseOptions,则进入不到“选项”面板,也就是ECP面板。以下是一个在没有指定MyBaseOptions时,用户点击“选项”时看到的一个出错画面:

image

当你新建一条Policy之后,除了MyBaseOptions之外,其他都是可选的,但仍然有不少实用的Role,比如MyDisplayName,添加这一条到新建策略之后,则允许用户更新自己邮箱的显示名称。

以下是一个新建Role Assignment Policy,指定Role,并把Policy指派给用户的过程

1. 新建Policy:

New-RoleAssignmentPolicy -Name “Mailbox Role Assignment Policy for Company”

2. 为新的Policy指定Role:

New-ManagementRoleAssignment –Name “MyBaseOptions – Company” –Role MyBaseOptions –Policy “Mailbox Role Assignment Policy for Company”

根据需要,可以自行添加更多的Role到新的策略

3. 把新的策略指派给用户

Get-mailbox –filter {过滤条件} | set-mailbox –roleassignmentpolicy “Mailbox Role Assignment Policy for Company”

最后,若希望把自己的策略更改为新建邮箱或者启用邮箱的默认策略,则

Set-RoleAssignmentPolicy -Identity “Mailbox Role Assignment Policy for Company” -IsDefault:$true

ISA Server 2004 用作 Web 代理服务器时,您可能会遇到长时间延迟

当您尝试访问重定向的 Web 页使用 Internet Explorer 和 Internet Explorer 将 ISA Server 2004 用作 Web 代理服务器时,您可能会遇到长时间延迟
点击这里查看逐句中英文对照机器翻译
查看机器翻译免责声明

查看本文应用于的产品
重要本文包含有关如何修改注册表的信息。请确保您对其进行修改之前备份注册表。请确保您知道如何还原注册表发生问题。有关如何备份、 还原,以及修改注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 (http://support.microsoft.com/kb/256986/ ) 在 Microsoft Windows 注册表的说明
展开全部 | 关闭全部
症状配置使用 Web 代理服务器与 Microsoft Internet 安全性和加速 (ISA) Server 2004 Microsoft Internet E…配置使用 Web 代理服务器与 Microsoft Internet 安全性和加速 (ISA) Server 2004 Microsoft Internet Explorer。当试图使用 Internet Explorer 访问重定向的 Web 页时您可能会遇到长时间延迟。
回到顶端
原因出现此问题时,ISA 基于服务器的计算机发送跨越到正在运行 BEA WebLogic 服务器的 Web 服务器的两个数据包的 HTTP GET 请求。在这种情况…出现此问题时,ISA 基于服务器的计算机发送跨越到正在运行 BEA WebLogic 服务器的 Web 服务器的两个数据包的 HTTP GET 请求。在这种情况下 Web 服务器可能会响应 HTTP GET 请求通过 HTTP 302 重定向邮件发送之前在 Web 服务器收到第二个数据包。在 Web 服务器不可能很长时间确认第二个数据包。因此,数据包最终超时。

默认状态下,EnablePMTUDiscovery 注册表项被禁用后运行的 Microsoft Windows Server 2003 的计算机上安装 ISA Server 2004。因此,数据包大小为 576 个字节发送数据。在这种情况下 HTTP GET 请求可以跨多个数据包。
回到顶端
解决方案警告如果您修改注册表错误地使用注册表编辑器或使用另一种方法,则可能会出现严重问题。这些问题可能需要重新安装操作系统。Microsoft 不能保证可以解决这些问题…警告如果您修改注册表错误地使用注册表编辑器或使用另一种方法,则可能会出现严重问题。这些问题可能需要重新安装操作系统。Microsoft 不能保证可以解决这些问题。修改注册表的风险由您自己承担。

若要解决此问题,启用 EnablePMTUDiscovery 注册表项正在运行 ISA Server 2004 计算机上。若要这样做,请按照下列步骤操作:
单击 开始、 单击 运行,键入 regedit,然后单击 确定。
在注册表编辑器中找到并单击以下注册表子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
用鼠标右键单击 EnablePMTUDiscovery 条目。
在 编辑 菜单上单击 修改,然后在 值日期 框中键入 1。
ISA 服务器的创建 ICMP MTU 的访问规则。有关如何执行此操作的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
902347 (http://support.microsoft.com/kb/902347/ ) 一个 ISA Server 2004 计算机在高负载情况下运行时,CPU 的使用可能会超过 50 %
退出注册表编辑器,然后重新启动计算机。
回到顶端