hmailserver密码算法

表 hm_accounts 中保存的密码,不同的账户是可以使用不同的加密算法来加密的。表中保存密码的字段是:accountpassword,而这个密码所使用的加密算法由后面的一个字段的值来决定,这个字段就是:accountpwencryption。当前这个字段的值决定了密码的不同加密算法,下面是其对应关系:

0 -> 用明码来保存密码,即不对密码进行加密;

1 -> 使用 Blowfish 来加密密码。据介绍,这种加密算法并不安全,和用明码保存密码的安全性相差不大;

2 -> 使用 MD5 加密算法来加密密码;

3 -> 使用 SHA256 加密算法来加密密码。这也是 hMailServer 官方推荐的加密算法

 

盐是第6 SHA256哈希值在数据库中看到的字符。 盐是一个随机字符串。 这已经不是第6,在用户的密码字符。



1。 生成随机字符串,其中包含6个字符的字符0-9,自动对焦(十六进制字符串)。 这是盐。

2。 创建一个新字符串,温度含有盐+用户的密码。

3。 生成的SHA256哈希温度。 这是哈希。

4。 在数据库中,存储字符串盐+在密码栏哈希。



这里是用GOOGLE翻译的, 很多词语不对,不过大概意思还是能理解;

盐其实是一个随机字符串,我们就理解为每次创建密码时,生成的随机字符串;





hmailserver用户密码的加密算法是这样的:

1.假设随机字符串:8et5p9 , 假设密码是:123456;



2.将”随机字符串”和”密码”连起来:8et5p9123456;



3.将连起来的新字符串,用SHA256加密,如:hash(‘sha256′,”8et5p9123456″)

得到的密文是:2dc34747955a3546b0c71459c4be8b56a998aa32bc0f5e546872157d665d14c1



4.将”随机字符串”与”SHA256加密后的密文”连起来,

得到新密文:8et5p92dc34747955a3546b0c71459c4be8b56a998aa32bc0f5e546872157d665d14c1

发表在 mail | 标签为 | hmailserver密码算法已关闭评论

SMTP 命令

SMTP 命令:
HELO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
EHLO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
MAIL FROM 命令中指定的地址是发件人地址
RCPT TO 标识单个的邮件接收人;可有多个 RCPT TO;常在 MAIL 命令后面。
DATA 在单个或多个 RCPT 命令后,表示所有的邮件接收人已标识,并初始化数据传输,以 CRLF.CRLF 结束
VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP 查询服务器支持什么命令
NOOP 无操作,服务器应响应 OK
RSET 重置会话,当前传输被取消
QUIT 结束会话

发表在 mail | 标签为 | SMTP 命令已关闭评论

gb,mb,kb

KB ,2 的 10 次方 : 1024 BYTE.
MB ,2 的 20 次方 : 1048576 BYTE, 或 1024 KB.
GB ,2 的 30 次方 : 1073741824 BYTE, 或 1024 MB.
TB ,2 的 40 次方 : 1099511627776 BYTE, 或 1024 GB.
PB ,2 的 50 次方 : 1125899906842624 BYTE, 或 1024 TB.
EB ,2 的 60 次方 : 1152921504606846976 BYTE, 或 1024 PB.
ZB ,2 的 70 次方 : 1024 EB.
YB ,2 的 80 次方 : 1024 ZB.

--------------------------------------------

1024MB(兆)=1GB
1024GB=1TB
1024TB=1PB
1024PB=1EB
1024EB=1ZB
1024ZB=1YB

发表在 technologys | gb,mb,kb已关闭评论

mail port | 邮箱端口

mail 常规支持smtp转发和pop3接收.
POP3服务器地址: pop.gmail.com 端口:110,   SSL 995

SMTP服务器地址: smtp.gmail.com 端口:25,   SSL: 465     STARTTLS: 587

IMAP服务器地址: imap.gmail.com 端口:143,  SSL:993

465端口是SMTPS(SMTP-over-SSL)SSL/TLS通讯协议的 内容一开始就被保护起来了 是看不到原文的。
587端口是STARTTLS协议的 属于TLS通讯协议 只是他是在STARTTLS命令执行后才对之后的原文进行保护的。
994端口为个别邮局用于SMTPS(SMTP-over-SSL)的端口。

 

=========================================================

 

25端口(SMTP):25端口为SMTP(Simple Mail Transfer
Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件。

如今绝大多数邮件服务器都使用该协议。当你给别人发送邮件时,你的机器的某个动态端口(大于1024)就会与邮件服务器的25号端口建立一个连接,你发送的邮件就会通过这个连接传送到邮件服务器上,保存起来。

109端口(POP2):109端口是为POP2(Post Office Protocol Version2,邮局协议2)服务开放的,是用于接收邮件的。

110端口(POP3):110端口是为POP3(Post Office Protocol Version3,邮局协议3)服务开放的,是用于接收邮件的。

143端口(IMAP):143端口是为IMAP(INTERNET MESSAGE ACCESS PROTOCOL)服务开放的,是用于接收邮件的。

目前POP3使用的比POP2广得多,POP2几乎被淘汰,也有某些服务器同时支持POP2和POP3协议。客户端可以使用POP3协议来访问服务端的邮件服务,如今ISP的绝大多数邮件服务器都是使用POP3协议(极少用POP2协议)。在使用邮件客户端程序的时候,会要求输入POP3服务器地址,默认情况下使用的就是110端口。当你用邮件客户端(比如、Thunderbird、foxmail、MS
Outlook
Express以及各类邮件精灵)登录时,你的机器就会自动用机器的某一个动态端口(大于1024)连接邮件服务器的110端口,服务器就把别人给你发的邮件(之前保存在邮件服务器上),发送到你机器,这样你就可以看到你客户端工具上的收件箱里的新邮件了。

IMAP协议,和POP3协议一样是用来接收邮件的,但是它有它的特别和新颖之处,它是面向用户的,它和POP3协议的主要区别是:用户可以不用把所有的邮件内容全部下载,而是只下载邮件标题和发件人等基本信息,用户可以由标题等基本信息,去决定是否下载邮件全文,用户可以通过客户端的浏览器直接对服务器上的邮件进行操作(比如:打开阅读全文、丢进垃圾箱、永久删除、整理到某文件夹下、归档、)。再简单来说就是:浏览器用的IMAP协议(143端口)来为你接收邮件以及让你很方便的操作服务器上的邮件。邮件客户端用的POP3协议(110端口)来为你接收邮件的全部信息和全文内容保存到你的本地机器成为一个副本,你对邮件客户端上的副本邮件的任何操作都是在副本上,不干涉邮件服务器上为你保存的邮件原本。

上面介绍的SMTP协议、POP2协议、POP3协议、IMAP协议都是不安全的协议。因考虑到网络安全的因素,下面给你介绍基于SSL(SecureSockets Layer
安全套接层)协议的安全的邮件收发协议。你的邮件在传输过程中可能被网络黑客截取邮件内容,如果你的邮件机密性非常强,不想被收件人以外的任何人和任何黑客截取,或者是涉及国家机密安全的,等等。那么你的邮件就不该使用上述的三种协议进行收发。

若你采用SMTP协议发邮件,那么你发出的邮件从你的机器传到服务器的过程中,可能被黑客截取从而泄露。若你采用POP2或者POP3协议收取邮件,那么你的邮件从服务器传至你当前机器的过程可能被黑客截取从而泄露。

465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件发送者抗抵赖功能。防止发送者发送之后删除已发邮件,拒不承认发送过这样一份邮件。

995端口(POP3S):995端口是为POP3S(POP3-over-SSL)协议服务开放的,这是POP3协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。POP3S和POP3协议一样,也是用来接收邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。

993端口(IMAPS):993端口是为IMAPS(IMAP-over-SSL)协议服务开放的,这是IMAP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。IMAPS和IMAP协议一样,也是用来接收邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。

 

发表在 mail | 标签为 , , | mail port | 邮箱端口已关闭评论

postfix 转发配置

 Postfix 转发服务器(192.168.0.188):

#填上被允许转发的主机IP 
mynetworks = 127.0.0.0/8 192.168.0.50

#允许转发的本地邮件列表

local_recipient_maps = hash:/etc/postfix/relay_recipients 

#允许转发的域名
relay_domains = domain.com

#允许转发的邮件列表
relay_recipient_maps = hash:/etc/postfix/relay_recipients 

#转发目的地

transport_maps = hash:/etc/postfix/transport 

[root@mail postfix]# cat relay_recipients 
@domain.com  ok

其中 ok为占为,格式需要

[root@mail postfix]# cat transport 
domain.cn relay:[192.168.0.50] 

 

最后对文件进行postmap操作,生成相应的xxx.db文件。

[root@mail postfix]# postmap relay_recipients 
[root@mail postfix]# postmap transport

 

 

 

 

其它一些参考:

     #客户端连接限制,只允许mynetworks定义的客户端连接并转发邮件
     smtpd_client_restrictions = permit_mynetworks, reject_unknown_client
     #垃圾邮件黑名单设置(参考mail-abuse.org/bl.spamcop.net/zen.spamhaus.org网站定义的垃圾邮件黑名单)
     map_rb1_domains=mail-abuse.org, bl.spamcop.net, zen.spamhaus.org
     smtp_client_restrictions=reject_map1_rb1
     #邮件Subject内容过滤
     header_checks = regexp:/etc/postfix/header_checks
     #postfix能累计客户端曾经发生错误的次数,对于可疑的客户端,postfix会主动延迟响应的时间
     #而且错误次数越多,延迟时间越长。这些都是通过下面的参数进行设置
     #参数说明:初次的延迟时间由smptd_error_sleep_time参数决定(默认1秒),当客户端累积了
     #smtpd_soft_error_limit次错误之后,往后每发生一次错误,postfix就多延迟1秒,当错误次数
     #超过smtpd_hard_error_limit时,postfix就放弃该客户端,并主动断线
     smtpd_error_sleep_time = 1s
     smtpd_soft_error_limit = 10
     smtpd_hard_error_limit = 20
  b) 创建/etc/postfix/transport文件,并生成db文件
      i) 内容: dgcn.com  relay:[mail202.dgcn.com]
     ii) 生成db文件:运行命令postmap /etc/postfix/transport
  c) 创建/etc/postfix/header_checks文件
     内容如下:
         /^Subject:.*((业.*务)|(网?.*赚.*钱?)|(税))*$/    REJECT
         /^Subject:.*(([报海].*关)|([财税].*务)|([发机税].*票)|(合.*作)|(客.*户))*$/      REJECT
         /^Subject:.*((商.*务)|(免.*费)|(生.*意)|(禁.*片)|(成.*人)|(商.*品)|(贸.*易)|(找工作真)|(送票上门)|(商务合作)|(票据代开))*$/      REJECT
         /^Subject:.*((管.*理)|(人.*才)|(经.*理)|(主.*管)|(会.*计)|(供.*求)|(求.*供)|(特.*价)|(价.*[格值])|(资.*[讯信]))*$/       REJECT
         /^Subject:.*((电.*机)|(课.*程)|(产.*品)|(展.*览)|(互.*利)|(朋.*友)|(什么时候过来)|(金耀才)|(破解)|(林先生))*$/   REJECT
         /^Subject:.*((为你避税)|(文件定稿)|(优惠代开)|(人才兴旺网))*$/   REJECT
    
 

    4) 垃圾邮件过滤
       根据如上设置,postfix可接收并转发test.com网域的所有邮件,但postfix并不知道test.com网域有哪些收件人,这样就会导致postfix收下许多无效的test.com网域邮件,最终无法转发而积压,最终导致postfix崩溃
       解决办法:将test.com网域的所有有效邮箱同步到postfix,以便postfix能及时判断收到test.com网域邮件的有效性
       a) 修改/etc/postfix/main.cf
          添加:relay_recipient_maps = hash:/etc/postfix/relay_recipients
       b) 创建/etc/postfix/relay_recipients
          # touch /etc/postfix/relay_recipients
          文件内容:
          admin@test.com  OK 
          说明:admin@test.com: 表示test.com网域的有效邮箱
               OK:此处可以是任意字符串,因文件格式的需要,必须填写
       c) 生成数据库文件
           # postmap /etc/postfix/relay_recipients
     5) 测试:
        a) 外发邮件:
              根据上面mynetworks设置,postfix只能转发postfix所在主机或192.168.1.202主机的邮件,现在假设登录postfix所在主机,粗体部分是需要我们手动输入的内容
              测试步骤如下:
              telnet  localhost 25
              Trying 192.168.1.202...
              Connected to 192.168.1.202 (192.168.1.202).
              Escape character is '^]'.
              220 localhost.localdomain ESMTP Postfix
              helo test.com
              250 localhost.localdomain
              mail from:<test@test.com>
              250 2.1.0 Ok
              rcpt to:<zzban@126.com>
              250 2.1.5 Ok
              data
              354 End data with <CR><LF>.<CR><LF>
              Subject: this is a test mail
              This is test mail content
              .       (注意此处的点".",表示邮件内容的结束标记)
             250 2.0.0 Ok: queued as 88B3B2A68032
             quit
             221 2.0.0 Bye
             Connection closed by foreign host.
             这样邮件就发送出去了,你可以登录你的收件邮件看看有没有收到邮件。如果收到邮件,表示一切正常,结束。
          b) 内发邮件
                步骤同上,只需将mail from所示的发件人和rcpt to所示的收件人邮箱互换即可

发表在 mail | 标签为 | postfix 转发配置已关闭评论

tail 文件查看

 

最后 10行
tail -10 a.log

最后 10行
tail -n 10 a.log

最后 5行
tail -n 5 a.log

最后10行的前5行
tail -n 10 a.log | head -n 5

发表在 linux | 标签为 | tail 文件查看已关闭评论

linux硬件查看及驱动设备

linux系统中的设备驱动是否安装好一般检查几个方面:
1、系统日志。嵌入式系统多是直接dmesg一下,看有没有设备关键字相关的出错信息(通用系统可检查/var/log/messages文件)。
2、已加载的模块。检查模块加载列表中有没有相关设备的模块。
      lsmod
3、设备列表。检查已加载的设备中有没有相关设备
    cat /proc/devices
4、设备入口。如果以上检查都正常,还需要检查设备目录下设备入口是否已经创建
    ls /dev/xxxx

如果以上检查都正常(驱动模块已经正常加载、设备入口存在且没有错误),而设备还不能正常工作,就需要检查设备驱动是否与芯片匹配或者驱动中的硬件资源配置是否与硬件对应了 

 

常用命令整理:

用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)

查看CPU信息:cat /proc/cpuinfo

查看板卡信息:cat /proc/pci

查看PCI信息:lspci (相比cat /proc/pci更直观)

查看内存信息:cat /proc/meminfo

查看USB设备:cat /proc/bus/usb/devices

查看键盘和鼠标:cat /proc/bus/input/devices

查看系统硬盘信息和使用情况:fdisk & disk - l   & df

查看各设备的中断请求(IRQ):cat /proc/interrupts

查看系统体系结构:uname -a

dmidecode查看硬件信息,包括bios、cpu、内存等信息

dmesg | more 查看硬件信息

 

/proc 中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:
Cpuinfo       主机CPU信息
Dma          主机DMA通道信息
Filesystems    文件系统信息
Interrupts       主机中断信息
Ioprots           主机I/O端口号信息
Meninfo       主机内存信息
Version           Linux内存版本信息
 

发表在 linux | linux硬件查看及驱动设备已关闭评论

SSL密钥算法检测工具-sslciphercheck

一个简单的控制台应用程序,用作于检查SSL加密支持,C#开发,需要.net4.0。它不仅能够检索和提取证书中包含信息,而且支持Server Gated Cryptography (SGC)。目前现有工具SSLDigger和 thcsslcheck 既不支持SSLv2 也不能从证书中检索信息。

-命令行
-支持SSLv2
-支持SSLv3
-支持TLSv1
-检查所有由OpenSSL支持SSL加密
-检索SSL证书的详细信息,包括SGC
-检查证书的问题,如过期,无效的证书链,不正确的名称等
-检查SSL重新协商问题等

注:SGC技术(Server Gated Cryptography)是在现有的SSL证书标准基础上增加的一种增强密钥用法(EKU),主要是考虑到2000年以前美国政府对高强度加密算法(128位)出口限制的因素而推出的,由于出口管制的原因,2001年以前推出的浏览器版本(如:IE 5)和服务器版本(Windows 2000 server)都只支持56位或40位加密算法,但由于电脑硬件技术和CPU处理速度的快速提高,使得破解40位加密算法只需几秒钟,而破解56位加密算法也只需几天时间。为了加强美国以外的国家的电子商务和网上银行的安全,SSL证书业界就在SSL证书标准基础上增加的支持强制实现128位加密的增强密钥用法(EKU),也就是说:即使受出口限制的40位或56位浏览器或服务器,只要使用支持SGC技术的SSL证书,就能不受限制的实现128位加密。这种强制实现128位高强度加密技术简称为SGC技术。(摘自pulog)

下载地址:

http://www.woanware.co.uk/downloads/sslciphercheck.v.1.4.2.zip

发表在 article | 标签为 | SSL密钥算法检测工具-sslciphercheck已关闭评论

windows2003/xp not support sha2 ssl cert

微软根据美国国家标准技术研究院(NIST)发出的安全指引,在有关文档“SHA2 and Windows” 中要求所有受信任的证书颁发机构(CA)从2012年1月1日起都必须能根据用户的要求签发支持SHA256的数字证书,所有操作系统和服务器软件等各种相关软件都必须能支持SHA256签名算法,请参考 SP 800-78-2  SP 800-57)。

 

需下载补丁支持KB968730 

知识库文章编号:968730

语言:Chinese (Simplified)

平台:i386

位置:(http://hotfixv4.microsoft.com/Windows%20Server%202003/sp3/Fix262679/3790/free/375507_CHS_i386_zip.exe)

 

知识库文章编号:968730

语言:Chinese (Simplified)

平台:x64

位置:(http://hotfixv4.microsoft.com/Windows%20Server%202003/sp3/Fix262679/3790/free/375529_CHS_x64_zip.exe)

发表在 windows | 标签为 | windows2003/xp not support sha2 ssl cert已关闭评论

RedHat Yum & Yum Update & EPEL

yum install epel-release

Redhat Linux通常由于没有注册,导致yum程序无法使用,需要将其替换为centos的yum程序。

1. 下载Yum的安装包,由于体系结构的不同和包的更新,因此目录和文件名的版本号可能需要调整以下。

#wget http://centos.ustc.edu.cn/centos/5/os/{i386|x86_64}/CentOS/yum-3.2.22-39.el5.centos.noarch.rpm
#wget http://centos.ustc.edu.cn/centos/5/os/{i386|x86_64}/CentOS/yum-fastestmirror-1.1.16-21.el5.centos.1.noarch.rpm
#wget http://centos.ustc.edu.cn/centos/5/os/{i386|x86_64}/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm

2. 查出当前的yum程序,进行卸载

#rpm -qa|grep yum
# rpm -e yum-3.2.22-20.el5 --nodeps
# rpm -e yum-updatesd-0.9-2.el5 --nodeps
# rpm -e yum-security-1.1.16-13.el5 --nodeps
# rpm -e yum-metadata-parser-1.1.2-3.el5 --nodeps
# rpm -e yum-rhn-plugin-0.5.4-13.el5 --nodeps

3. 下载并导入KEY
# cd /etc/pki/rpm-gpg/
# wget http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-5
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

4. 安装yum安装包
rpm -ivh yum-3.2.22-39.el5.centos.noarch.rpm \
yum-fastestmirror-1.1.16-21.el5.centos.1.noarch.rpm \
yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm

5. 修改配置文件

Vi /etc/yum.repos.d/rhel-debuginfo.repo

[base]
name=Red Hat Enterprise Linux $releasever -Base
baseurl=http://mirrors.sohu.com/centos/5.5/os/$basearch/
gpgcheck=1

[update]
name=Red Hat Enterprise Linux $releasever -Updates
baseurl=http://mirrors.sohu.com/centos/5.5/updates/$basearch/
gpgcheck=1

[extras]
name=Red Hat Enterprise Linux $releasever -Extras
baseurl=http://mirrors.sohu.com/centos/5.5/extras/$basearch/
gpgcheck=1

[addons]
name=Red Hat Enterprise Linux $releasever -Addons
baseurl=http://mirrors.sohu.com/centos/5.5/addons/$basearch/
gpgcheck=1

至此yum安装完成,可以 yum install 安装程序

###########################################

CentOS 7 repo

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all
yum makecache

######################################

yum update

RedHat/CentOS/Fedora使用  yum update  更新时默认会都会升级内核,比如从CENTOS6.8升级到CENTOS6.9,结果可能导致php5.2等无法使用;有些服务器硬件(特别是组装的机器)在升级内核后,新的内核可能也会认不出某些硬件,要重新安装驱动,很麻烦。所以在生产环境中不要轻易的升级内核,除非你确定升级内核后不会出现麻烦的问题。

不升级内核方法:

在 /etc/yum.conf 的 [main] 后面添加以下配置即可!

exclude=kernel*
exclude=centos-release*

#################################

EPEL

-bit.edu.cn
rpm -ivh http://mirror.bit.edu.cn/fedora/epel/epel-release-latest-6.noarch.rpm
rpm -ivh http://mirror.bit.edu.cn/fedora/epel/epel-release-latest-7.noarch.rpm
yum repolist

-官方源直接安装

CentOS/RHEL 5:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm

CentOS/RHEL 6:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

CentOS/RHEL 7:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

-手动阿里安装
1、备份(如有配置其他epel源)
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup

2、下载新repo 到/etc/yum.repos.d/

epel(RHEL 7)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

epel(RHEL 6)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

epel(RHEL 5)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-5.repo

发表在 linux | 标签为 , | RedHat Yum & Yum Update & EPEL已关闭评论

windows memcache

下载memcached-1.2.6-win32-bin
cmd进入memcached.exe的目录
安装命令:
安装 memcached.exe –d install
卸载 memcached -d uninstall
启动 memcached.exe –d start
停止 memcached.exe –d stop
  netstat –an 默认端口11211
登陆 telnet localhost 11211
查看状态 stats

对查看的信息的关键字中英文对照表

 

pid

memcache服务器的进程ID

uptime

服务器已经运行的秒数

time

服务器当前的unix时间戳

version

memcache版本

pointer_size

当前操作系统的指针大小(32位系统一般是32bit

rusage_user

进程的累计用户时间

rusage_system

进程的累计系统时间

curr_items

服务器当前存储items数量

total_items

从服务器启动以后存储的items总数量

bytes

当前服务器存储items占用的字节数

curr_connections

当前打开着的连接数

total_connections

从服务器启动以后曾经打开过的连接数

connection_structures

服务器分配的连接构造数

cmd_get

get命令(获取)总请求次数

cmd_set

set命令(保存)总请求次数

get_hits

总命中次数

get_misses

总未命中次数

evictions

为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items

bytes_read

总读取字节数(请求字节数)

bytes_written

总发送字节数(结果字节数)

limit_maxbytes

分配给memcache的内存大小(字节)

threads

前线程数

 

缓存命中率 =get_hits/cmd_get * 100%。下面的get_misses的数字加上get_hits应该等于cmd_get。

增删改查命令
add feifei 0 60 5  回车后,会让你输入,你就输入 abcde 这5个字符,那么会提示你保存成功。这样就会保存 feifei  这个元素,60秒
get feifei 
set  feifei   0 70 8
delete  feifei 
flush_all    清空
echo "flush_all" | nc localhost 11211
linux nc命令操作memcache

用nc命令操作memcached
1)存储数据:printf “set key 0 10 6\r\nresult\r\n” |nc 192.168.2.34 11211
2)获取数据:printf “get key\r\n” |nc 192.168.2.34 11211
3)删除数据:printf “delete key\r\n” |nc 192.168.2.34 11211
4)查看状态:printf “stats\r\n” |nc 192.168.2.34 11211
5)模拟top命令查看状态:watch “echo stats” |nc 192.168.2.34 11211

6)清空缓存:printf “flush_all\r\n” |nc 192.168.2.34 11211 (小心操作,清空了缓存就没了)

memcached的基本命令(安装、卸载、启动、配置相关)

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效) 
-m 最大内存使用,单位MB。默认64MB ,最大好像2G
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024 
-f 块大小增长因子,默认是1.25 
-n 最小分配空间,key+value+flags默认是48 
-h 显示帮助

memcached的基本命令(当memcached 启动后用于对memcached管理的数据和本身运行状态相关的命令)

Command

Description

Example

get

Reads a value

get mykey

set

Set a key unconditionally

set mykey 0 60 5

add

Add a new key

add newkey 0 60 5

replace

Overwrite existing key

replace key 0 60 5

append

Append data to existing key

append key 0 60 15

prepend

Prepend data to existing key

prepend key 0 60 15

incr

Increments numerical key value by given number

incr mykey 2

decr

Decrements numerical key value by given number

decr mykey 5

delete

Deletes an existing key

delete mykey

flush_all

Invalidate specific items immediately

flush_all

Invalidate all items in n seconds

flush_all 900

stats

Prints general statistics

stats

Prints memory statistics

stats slabs

Prints memory statistics

stats malloc

Print higher level allocation statistics

stats items

 

stats detail

 

stats sizes

Resets statistics

stats reset

version

Prints server version.

version

verbosity

Increases log level

verbosity

quit

Terminate telnet session

quit

发表在 db | 标签为 | windows memcache已关闭评论

邮件黑名单查询

http://whatismyipaddress.com/blacklist-check

http://www.spamhaus.org/

http://www.kloth.net/services/dnsbl.php

http://www.anti-abuse.org/multi-rbl-check-results/

发表在 mail | 邮件黑名单查询已关闭评论

postfix 技巧

1,快速查出系统有那些值得注意的事情:
#egrep '(reject|warning|error|fatal|panic):' /var/log/maillog
#tail -f /var/log/maillog |grep -e "Pass|LOGIN"
2,检查main.cf配置文件是否正确:
#postfix check

3,重启Postfix服务与重新载入配置:
#service postfix restart
#postfix reload

4,一封邮件最多几位收件人限制,默认1000,修改main.cf
smtpd_recipient_limit = 100

5,单封邮件容量上限,默认10MB,修改main.cf
message_size_limit = 10000000

6,客户端出错或恶意错误连接可用以下限制main.cf
smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20

7,改变投递地址,假如用户kevin@23day.com更换了新地址,使用以下方法提示其它用户:
(1)在/etc/postifx/main.cf中添加relocated_maps = hash:/etc/postfix/relocated参数
(2)touch /etc/postfix/relocated
在relocated中添加以下信息
kevin@23day.com 
  chen@23day.com
#postmap /etc/postfix/relocated
#postfix reload

8,网域更换
(1)在/etc/postifx/main.cf中添加relocated_maps = hash:/etc/postfix/relocated参数
(2)touch /etc/postfix/relocated
在relocated中添加以下信息
@23day.com   23day.cn
#postmap /etc/postfix/relocated
#postfix reload

9,邮件队列管理工具postqueue与postsuper
#postqueue -p查看邮件队列
如果队列序号加了*号表示为活动队列
如果队列序号加了!号表示为延期队列
如果队列序号没有*与!号表示为等待队列
#postsuper -d DBA3F1A9删除队列里的邮件
#postsuper -d ALL删除队列里所有的邮件
#postsuper -r ALL重新排队所有邮件
#postcat -q DBA3F1A9查看邮件内容

10,邮件转发设置将所有出站邮件转发到192.168.1.1服务器上main.cf
relayhost = 192.168.1.1

11,针对某个域的转发
#vi /etc/postfix/main.cf 新增transport_maps = hash:/etc/postfix/transport
#vi /etc/postfix/transport gmail.com  smtp:[192.168.1.10] 设定寄往gmail的邮件从192.168.1.10机器转发出去
#postmap /etc/postfix/transport
#postfix reload

12,CentOS4.7下挂载共享目录
#mount -t cifs -o username=extmailuser,password="mis[]229" //172.28.156.122/extmail /mnt

13,配置垃圾邮件策略行为"D_DISCARD->丢弃,D_PASS->通过,D_BOUNCE->返回"
#vi /etc/amavisd.conf 第115行到118行
$final_virus_destiny      = D_PASS;   
$final_banned_destiny     = D_BOUNCE;
$final_spam_destiny       = D_PASS;
$final_bad_header_destiny = D_PASS;

14,单网卡又IP配置
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-eth0 ifcfg-eth0:0
编辑ifcfg-eth0:0里的DEVICE参数为eth0:0
#service network restart

15,CentOS4.7使用代理上网(命令行上网)
编辑/etc/profile文件
#vi /etc/profile
http_proxy=192.168.1.1:3128  代理分别指定http,https,ftp
https_proxy=192.168.1.1:3128
ftp_proxy=192.168.1.1:3128
no_proxy=192.168.1.  局域网不使用代理
export http_proxy https_proxy ftp_proxy no_proxy
保存重启机器

16,拒绝某一IP发送邮件服务器(方法很多)
#vi /etc/postfix/main.cf
smtpd_client_restrictions =
check_client_access hash:/etc/postfix/client_access
#vi /etc/postfix/client_access
192.168.1.5    REJECT   拒绝192.168.1.5发送邮件

17,使用代理升級CentOS(yum)
#vi /etc/yum.conf
proxy=http://192.168.1.55:3128
proxy_username=yum-user
proxy_password=yum-passwd

18,邮件队列处理方式4种队列
收件(incoming),活动(active),延迟(deferred),故障(corrupt)
新邮件第一站是"收件队列"如果系统资料空闲,会转到"活动队列",如果投递失败会被移入"延迟队列"

19,投递操作
Postfix以收件人地址类型判断如何投递邮件,主要地址类型及投递顺序为本地(local),虚拟别名(Virtual alias),虚拟邮箱(virtual mailbox)以及转发(relay).

20,clamav杀毒软件RPM下载地址http://packages.sw.be/clamav/
下载最新版然后使用rpm -Uvh升级.

21,mysql导出查询结果
mysql>select name,username from mailbox into outfile 'mail.txt' fields terminated by ',';
默认导出文件在/var/lib/mysql/extmail目录

21,全局通讯录生成方法
首先使用21项导入数据,然后使用excel编辑保存成csv档,再将数据复制到globabook.cf中就可以了(官方现有批perl工具,非常好用,这是不知道这工具之前想的办法)

22,添加静态路更新freshclam(未验证是否成功)
61.177.194.0    192.168.1.118  255.255.255.0

23,使用rsync同步home目录
Server配置:
#vi /etc/xinetd.d/rsync 将disable改为no
#vi /etc/rsyncd.conf 添加以下内容
[extmail]
path=/home/domains
auth users=admin
uid=root
gid=root
secrets file=/etc/rsyncd.secrets
read only=yes
#vi /etc/rsyncd.secrets 添加以下内容
admin:password
#chmod 600 /etc/rsyncd.secrets
#/etc/xinit.d/xinetd restart
Client配置:
vi /etc/rsyncd.secrets添加密码"password"
#rsync -vzrtopg --delete --progress admin@192.168.1.1::extmail /home/domains --password-file=/etc/rsyncd.secretes

24, freshclam使用代理升级病毒库(其实很简单,找得好辛苦)
#vi /etc/freshclam.conf 将此配置文件的以下代理设置打开就可以了
HTTPProxyServer 192.168.1.9
HTTPProxyPort 3128

25,改变投递地址
#vi main.cf
relocated_maps = hash:/etc/postfix/relocated
#vi relocated
old@test.com    new@test.com
#postmap relocated

26,传输表(邮件网关可用),使用relay参数将mail.23day.com的邮件直接转发到192.168.1.9主机上
#vi main.cf
transport_maps = hash:/etc/postfix/transport
#vi transport
mail.23day.com    relay:[192.168.1.9]
#postmap transport
#postfix reload

27,bcc监视用户邮件main.cf
always_bcc = postmaster@doamin.com
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc_maps
sender_bcc_maps = hash:/etc/postfix/sender_bcc_maps
#touch /etc/postfix/recipient_bcc_maps
a@abc.com  b@abc.com
#touch /etc/postfix/sender_bcc_maps
#postmap /etc/postfix/recipient_bcc_maps
#postmap /etc/postfix/sender_bcc_maps

28,查询与统计用户发送与接收了多少邮件
a)npg001@21cn.com发送了多少邮件进来
egrep npg001@21cn.com /var/log/maillog |grep Pass |grep -v 172.28.156 |wc -l
egrep chenle@npg-group.com /var/log/maillog |grep Pass |grep 172.28.156.90 |wc -l
egrep chenle@npg-group.com /var/log/maillog |grep Pass |grep -v 172.28.156.90 |wc -l

29,header_checks邮件过滤
将所有发给chinanpg@126.com的邮件转发到twork@21cn.com
/^To:.*chinanpg@126\.com*/ REDIRECT        twork@21cn.com
删除来源地址为cn99.com的所有邮件并在日志显示deletecn99信息
/^From:.*@*\.cn99\.com/     DISCARD deletecn99
拒绝twork@21cn.com发往本域的邮件,将返回错误信息给发送者
/^From:.*twork@21cn\.com/        REJECT  rejectspam

发表在 mail | 标签为 | postfix 技巧已关闭评论

Postfix 转发/备用交换

备用交换器

在DNS的术语中,MX代表mail exchanger。一个MX记录代表一个网域承接外来邮件的主

机,以及该主机的优先度。同一个网域可以同时有好几个MX记录,优先度最高的主机称

为主交换器,其余主机称为备用交换器。备用交换器的任务,是在主交换器离线时,承

接该网域的外来邮件;当优先度高于自己的其他备用交换器或主交换器恢复上线时,已

收下的邮件必须传给主交换器来处理,备用交换器不能自己擅作主张,将收到的邮件直

接投递到最终目的地。假设备用交换器时,不必特别设定如何传信给主交换器,因为

postfix自己能从DNS查出如何转信给主交换器。不过,前提是你必须让postfix知道自

己是哪一个网域的备用交换器。你的 postfix系统是哪些网域的备用交换器,那些网域

的名称就必须被列在relay_domains参数中。当寄信方的MTA发觉收信网域的主交换器离

线了,它会试着联系优先度次高的交换器,直到有一个备用交换器能够收下邮件地址为

止。如果你的postfix系统是某个网域的备用交换器,而且该网域被列在

relay_domains参数中,则postfix会收下该网域的邮件,并将其排入队列。每隔一段时

间,postfix会扫描它的队列,并检查是否有优先度更高的邮件交换器恢复连接,如果有

,则交出先前代收的邮件。

如果不能交出邮件,postfix会持续尝试,直到邮件在队列里等待的时间超过

maximal_queue_lifetime所指定的时限为止。此参数的默认值为五天,如果邮件在等待

队列里待的时间超过此上限,postfix会发出退信通知函给寄件人。如果你事先知道主交

换器停机的时间会超过五天,可以适度提高时限。

转发列表

postfix可从relay_domains参数与DNS系统知道自己的备用交换器角色,但是它如何知

道转发的网域中有哪些有效收件人?如果备用交换器无法事先知道主交换器有哪些合法

邮箱,它势必被迫盲目收下所有邮件,等到主交换器恢复连接时,才会发现有哪些邮件

无法投递并退信给原寄件人。因此,我们郑重建议你在备用交换器设置一份列表,记录

受理网域有哪些合法用户,并定期与主交换器同步更新。

当备用交换器上的postfix server收到寄给relay_domains所列网域的邮件时,它会检

查relay_recipient_maps参数所指定的查询表,借此判断是否应该收下邮件,如不应收

下则直接拒收。relay_recipient_maps参数的设定方式如下:

relay_recipient_maps = hash:/etc/postfix/relay_recipients

relay_recipients查询表应该记录所有合法收件人的邮件地址。postfix只需要此表的

索引键,所以对应值可以任意填写(但不可不填)

对于人事变动频繁的网域,我们建议你应该研制一个同步程序,利用rsync、ssh、

crond等工具,自动从主交换器下载最新列表。

如果备用交换器的postfix不过滤转发网域的收件地址,会有什么后果?答案是备用交换

器会收到一大堆无法投递的垃圾邮件,并产生一大堆寄不出去的退信通知函。因为捏造

收件人是垃圾邮件发送者常用的手段之一,他们事先不知道你的邮件交换器有哪些用户

,于是以常用的人名来捏造收件地址,试图蒙混过关。此外,垃圾邮件也不可能会提供

有效的回信地址。

假如备用交换器与主交换器位于同一个局域网,除了使用rsync、scp、ssh、crond等传

统工具之外,还有更好的方法来进行列表的同步更新工作。比方说,将用户账号储存在

某种数据库中,像mysql、ldap等,让postfix能够进行实时查询。

在你设定了relay_recipient_maps之后,还必须面对一个潜在的问题;你必须将所有转

发网域的所有合法邮件地址都列入查询表,因为 postfix将拒收任何收件地址没出现在

查询表的邮件。如果你不知道某些网域的合法邮件地址,你可以为该网域设置一个无限

别名地址;

快速清空

为许多网域承接邮件的网络,时常会面临无法立刻送出邮件的困境,因为他们的顾客的

服务器不见得永远保持连接。在客户离线的情况下,ISP只能将收到的邮件暂时存放在队

列里,等到客户的服务器恢复连接时,再使用SMTP的ETRN命令,一次清空队列里的所有

邮件;

当一个网域的主交换器恢复连接并完成收信准备时,我们的队列里已囤积了大量要传给

该网域的邮件,让postfix逐一检查每一个队列文件的收信网域为何,将会损耗许多时间

。为此,postfix提供了一种称为“快速清空”(fast flush)的功能,可用来在队列

中找出寄给特定网域的所有邮件。快速清空功能是由flush daemon控制管理的,对于

postfix所代理的每一个收信网域,flush各准备了一份列表,记录该网域邮件在队列里

的编号。如此,在发出ETRN 命令之后,postfix可以迅速找出所有要投递到该网域的邮

件。

默认情况下,flush只管理relay_domains所列的网域。如果还有其他网域也需要快速清

空服务,你可以将它们的网域名称在fast_flush_domains参数中,像这样:

fast_flush_domains = $relay_domains, example.com

此例中,example.com是一个没列在relay_domains的网域。

你可以使用postqueue -s命令来通知postfix,某各快速清空网域已经准备好接收先前

累积的邮件了:

postqueue -s example.com

传输表

当你想改变默认的邮递流程时,可利用传输表(transport map)来达成愿望。也就是

说,如果你希望postfix以你指定的方式来处理特定网域的邮件,而不管DNS MX记录是

怎么设定的,你可将相关网域与传送方式写在一二传输表中,然后将transport_maps参

数指向此传输表。

本节讨论transport_maps参数的基本用法,后面几章会陆续谈到此参数在其他方面的应

用。transport_maps参数可指向一个或多个传输表,例如:

transport_maps = hash:/etc/postfix/transport

传输表的索引键可以是完整的邮件地址、网域名称或子网域名称。当收件地址或网域名

称符合传输表某个记录的索引键时,则以该记录的对应值所指定的传输法来投递该邮件

传输表内容

example.com smtp:[192.168.23.56]:20025

oreilly.com relay:[gateway.oreilly.com]

oreillynet.com smtp

ora.com maildrop

kdent@ora.com error:no mail accepted for kdent

传输表对应值的格式,随传输方法而异,但大体上符合transport:nexthop这样的格式

。某些传输方法的nexthop可表示成host:port形式,表示递送路径下一站的主机名与

通信端口。以下分别说明可组成对应值的三种元素:

transport

传输方法的名称。此名称必须是master.cf所定义的传输类型之一。如果你增加

了新的传输方法,则必须先在master.cf定义其名称与传输类型。

host

收信主机或网域。host只能搭配inet传输类型(smtp或lmtp)。postfix按照一

般收信网域的处理流程host:先查询mx记录来决定邮件的去处,如果没有mx记录,则传

到a记录所指的ip地址。如果将主机名称放在一对方括号内,则postfix会直接传信到

host的a记录所指的ip地址。但如果你直接使用ip地址,则一定要加方括号,例如

〔192.168.23.56〕

port

收信主机的通信端口。通常只有inet类型的传输服务才会指定通信端口。port

的格式可以是十进制数,也可以是/etc/services文件定义的服务名称。

上例列出的传输表内容,暂时了transport:host:port的多种可能组合,分别解释如

下:

example.com smtp:〔192.168.23.56〕:20025

收下所有写给example.com的邮件,然后使用smtp MDA传送到位于

192.168.23.56的主机,而且smtp MDA必须连接到该主机的port 20025,而非默认的

smtp port25。请注意,由于我们直接使用了ip地址,所以必须加上方括号。

oreilly.com relay:〔gateway.oreilly.com〕

收下所有要寄到oreilly.com的邮件,然后使用relay MDA转寄给

gateway.oreilly.com主机。由于没指定通信端口,所以relay使用默认的port25。由于

主机名称被放在方括号内,所以邮件是直接传到gateway.oreilly.com的A记录所指的ip

地址,而非mx记录所指的ip地址。

relay MDA是postfix2.0版以后才引进的,它修正了队列调度算法可能引起的潜在效能

瓶颈。当你要将入站邮件送到内部系统时,应该直接通过relay MDA,以避免这类邮件与

出站邮件竞争资源。

oreillynet.com smtp

收下所有目的地为oreillynet.com网域的邮件,然后交给smtp MDA执行投递操

作。由于没指定host:port,所以smtp依照oreillynet.com网域的DNS MX或A记录来决

定目的地,并使用port 25来联系收信服务器。实际上这个例子实属多余,因为只要将

oreillynet.com列在relay_hosts或relay_domains参数,就可以达到相同效果。

ora.com maildrop

收下所有写给ora.com网域的邮件,然后交给maildrop处理。maildrop的运作方

式必须被明确定义在master.cf中。由于maildrop不需要inet socket,所以不必指定

host:port。

kdent@ora.com error:No mail accepted for kdent

error是一种特殊的传输服务,它唯一的作用是当场拒收邮件。冒号之后的字符

串是回复给传送方的错误信息。

传输表不一定用来将邮件传递到外界,也可以用于将特定邮件交给本地系统,以便进行

特殊处理。比方说,过滤邮件内容、暂时扣留某个网域的所有邮件等。

延迟投递时间

在某些情况下,你可能会希望postfix先收下邮件,但不立刻投递出去。等到你下达

posqueue -f domain命令之后,或是postfix从支持快速清空功能的网域收到ETRN

SMTP命令之后,postfix才递送出被暂扣留的邮件。

最常见的一种情况是ISP为客户的网域代收邮件,但是客户的网络并不总是保持连接。

ISP必须先储存邮件,直到客户的网络恢复连接,并且能收下邮件为止。类似的情况还有

客户网络上的用户,应该要能够通过本地的邮件网关来寄信,该网关必须能先暂存外寄

邮件,直到网络恢复连接时才投递出去。

暂缓转发邮件

在以下的程序中,我们要先创建一种新型的传输法,称为“ondemand”,然后设定传输

表,要求所有寄到example.com网域的邮件,一律先暂时扣留在队列里。

1。 在master.cf设置一种新的传输法,并命名为ondemand。它的配置应该与smtp传

输法一样

ondemand unix - - n - - smtp

2、要求postfix自动延缓任何通过ondemand递送的邮件。只要将新设的ondemand传输法

列在main.cf的defer_transports参数中,就可以达到自动延缓的效果:

defer_transports = ondemand

3、 确定transport_maps参数指向我们的传输表:

transport_maps = hash:/etc/postfix/transport

4、编辑修改传输表,使得example.com网域的所有邮件都通过ondemand传输法来投递:

example.com ondemand

5、运行postmap将传输表转换成数据库格式:

postmap /etc/postfix/transport

6、要求postfix重新读取配置文件,使我们所做的改变开始生效:

postfix reload

现在,所有要寄到example.com网域的邮件都会被扣留在队列里,直到你下达以下命令为

止:

postqueue -f example.com

暂缓投递外地邮件

假设有一个小型办公室网络,他们与Internet之间没有连接,而是由网管人员架设呢一

台邮件服务器来接收内部员工寄到外界的邮件。网管人员希望能够控制外地邮件的投递

时间,让postfix只有在有连接时才送出外地邮件。

1、 将smtp服务名称列在main.cf的defer_transports参数中:

defer_transports = smtp

2、要求postfix重新加载配置文件,使我们的改变生效:

postfix reload

以后,每当办公室网络与Internet接通时,网管人员就可以使用postqueue -f命令来送

出所有外地邮件。

入站邮件网关

邮件网关是一种能收下邮件然后将其转交给其他系统的邮件服务器系统。在在网络术语

中,“网关"一词的意义有两个:一是物理上的含义,代表某个网络到达另一个网络的必

经通路;另一层含义是协议的转换,将一种协议所传达的信息以另一个协议传到目标系

统。

邮件网关通常被设置在企业网络与Internet之间,甚至与防火墙系统搭配在一起,以尽

可能减少需要直接访问Internet的服务器数量。

假设有一个企业网络,这家企业有多个部门,各部门都有自己的子网域,也有自己的内

部邮件服务器。网关系统gw.example.com负责收下企业网络的所有邮件。假设人力资源

部门的邮件系统位于mail.example.com,此部门员工的邮件地址是

user@hr.example.com;业务部门的邮件系统位于mail2.example.com,他们的邮件地

址格式是user@sales.example.com。每个字网络上的主机,应该分别从他们各自的内部

邮件服务器取信。邮件网关gw.example.com必须设置传输表,才能将收下的邮件交付给

正确的内部邮件服务器。

下列程序示范要如何设定gw.example.com,才能使它将邮件交给正确的内部服务器。

1、确定hr.example.com与sales.example.com的DNS mx记录都指向gw.example.com网

2、编辑网关系统的main.cf配置文件,将两个子网域列入relay_domains参数:

relay_domains = hr.example.com, sales.example.com

3、确定transport_maps参数指向正确的传输表“

transport_maps = hash:/etc/postfix/transport

4、编辑修改传输表内容,将各网域指向正确的内部服务器:

transport maps

hr.example.com relay:[mail.example.com]

sales.example.com relay:[mail2.example.com]

注意,内部邮件服务器的主机名是放在一对方括号内,这使得网关系统可跳过mx查询,

而直接将邮件递送到主机名称所对应的ip地址。

5、重新加载配置文件,使改变生效:

postfix reload

郑重建议你将mail与mail2的所有合法邮箱列表汇整成一个查询表,放在gw系统上,并将

网关系统的relay_recipient_maps参数指向查询表;否则,gw.example.com将会收下

许多垃圾邮件。

出站邮件网关

若邮件系统没有足够的信息或能力将邮件直接送达目的地,它可将邮件交给位于更有利

位置的其他系统,间接送到目的地。假设那两个内部邮件系统不能直接访问 Internet,

它们不能将字网络上的用户寄到外地的邮件直接递送到目的地,但它们可以将所有外地

邮件都托付给网关系统,由网关代为递送。下列步骤示范如何设定mail.example.com上

的postfix server,使它将收下的所有外地邮件都交给gw.example.com。

在开始设定内部邮件系统之前,请确定邮件网关已被设定成能接收内部邮件系统的转发

要求。网关系统的mynetworks参数应该涵盖内部邮件系统的所有 ip地址;此外,如果

网关系统使用了smtp ube过滤规则,请确定permit_mynetworks被列在过滤规则里。

1、在各部门的办公室贴公告,告诉你的同事,要求他们设定MUA使用的内部邮件系统(mail1 mail2。。。)为smtp server

2、设定内部邮件系统(mail1与mail2)的mynetworks(或mynetworks_style)参数,确定子网络上的全部客户端系统都涵盖在内。

3、编辑内部邮件系统的main.cf,将relayhost参数指向网关系统:

relayhost = 〔gw.example.com〕

4、重新加载postfix配置文件,使改变生效:

postfix reload

现在,所有送到mail.example.com的外地邮件,都会通过gw.example.com送到目的地。

UUCP、传真以及其他投递机制

postfix的在线文件描述了如何设定postfix使其将邮件交给传真机系统以及如何使用postfix来架设UUCP网关。当你的postfix需要与任何特殊设备接轨时,这些例子提供了很好的参考。原则上,如果你需要在不同类型的系统或网络之间架设网关,传输表提供了引导邮件到其他系统或设备的机制。

通过上面文章,我们可以清楚的知道Postfix邮件转发的一些附属知识,能更容易的掌握Postfix邮件转发的功能。

发表在 mail | 标签为 | Postfix 转发/备用交换已关闭评论

spf

SPF记录详解

句型

在一条SPF记录中,按照排列的先后顺序,对所给出的机制进行验证.如果在SPF记录中,没有机制或修改符,默认结果是中性(Neutral);如果域没有SPF记录,结果是:””(None);如果在DNS解析期间,有一个临时错误,会报临时错误”(TempError)(以前的规划中称作错误”(error));如果SPF记录句型错误,比如写法错误或者使用了未知句型,会报永久错误”(PermError)(以前称作”unknown”)

1 机制

1.1 机制表示

1.1.1 all

这个机制总是匹配的,通常用在记录的结尾.:

“v=spf1 mx –all” 允许所有该域的MX邮件服务器发送邮件,禁止所有其他的.

“v=spf1 –all” 该域根本不能发送邮件

“v=spf1 +all” 任何服务器都可以发送邮件

1.1.2 ip4

“v=spf1 ip4:192.168.0.1/16 –all” 允许192.168.0.1192.168.255.255的服务器发送邮件

“v=spf1 ip4:192.168.0.1 –all”   允许192.168.0.1发送邮件,“v=spf1 ip4:192.168.0.1/32 –all”同意

1.1.3 ip6

单个IP,ip4不同,/128为默认前缀 :

"v=spf1 ip6:1080::8:800:200C:417A/96 -all"

 

允许1080::8:800:0000:0000 1080::8:800:FFFF:FFFF之间的主机发送

"v=spf1 ip6:1080::8:800:68.0.3.1/96 -all"

 

允许 1080::8:800:0000:0000 1080::8:800:FFFF:FFFF之间的主机发送

1.1.4 a

:假设当前域为example.com

"v=spf1 a -all" 当前域被使用

"v=spf1 a:example.com -all"当前域被使用

 

Equivalent if the current-domain is example.com.

"v=spf1 a:mailers.example.com -all" 指定mailers.example.com的主机IP可以外发邮件

"v=spf1 a/24 a:offsite.example.com/24 -all" 如果example.com解析到192.0.2.1,那么全部的C类地址192.0.2.0/24将作为可外发 邮件的IP地址;同样,如果offsite.example.com有多个A记录地址,每一个IP地址也会被扩展到CIDR子网,作为可外发邮件IP地址.

1.1.5 mx

所有域的MX记录对应的A记录,按照MX记录的优先级进行验证.如果发送IP在这些记录中,则机制匹配.如果域未指定,默认为当前域.

 

A记录需要精确匹配发送邮件的IP地址.如果有CIDR前缀,则需要逐个对应IP地址验证.

:

v=spf1 mx mx:deferrals.domain.com -all"

 

Perhaps a domain sends mail through its MX servers plus another set of servers whose job is to retry mail for deferring domains.

也许一个域可以通过他的MX服务器发送邮件,而另外也可以通过deferrals.domain.comMX服务器发送邮件.

"v=spf1 mx/24 mx:offsite.domain.com/24 -all"

也许一个域的MX服务器在一个IP接收邮件,而用临近的另一IP发送邮件.

1.1.7 prt

发送IPPTR记录至少有一个和给定域相匹配.尽量避免使用这种机制,因耗费大量的DNS查询

例子:

"v=spf1 ptr -all"

 

"v=spf1 ptr:otherdomain.com -all"

1.1.8 exists

对被提供的域进行A记录查询,如果有结果,则匹配.如果结果是”-“,会被当作127.0.0.2对待.

在下面的例子中,发件IP地址为1.2.3.4,当前域为example.com

"v=spf1 exists:example.net -all"

如果example.net不能解析,结果失败.如果可以解析.机制匹配.

1.1.10 include

句型:include:<domain>

指定的域被查询后匹配.如果查询无匹配或者有错误,接着开始下一个机制处理.警告:如果指定域不是合法有效的SPF记录,返回永久性错误结果.某些邮件接收者会基于此错误,拒绝接受邮件.

:

在下面的例子中,发信IP1.2.3.4,当前域是example.com

“v=spf1 include:example.net –all”

如果example.net没有SPF记录,结果是永久错误”(PermError)

假设example.netSPF记录是”v=spf1 a –all”

查询exapmle.netA记录,如果匹配1.2.3.4,结果是通过”(Pass);如果不匹配,,include整体匹配失败,后面的-all将不再验证,最后总的结果还是失败”(Fail).

 

这个机制会涉及信任关系,可能会有越权行为,可能被人假冒.因此可以设置为中性,include前加上标识符?

“v=spf1 ?include:example.net –all”

该机制一般不宜选择.

 

1.2 标识符

作为机制的前缀,表明机制的状态.机制的默认标识符为”+”

"+" Pass (通过)

"-" Fail (失败)

"~" SoftFail (软失败)

"?" Neutral (中性)

2修改符

在一个SPF记录中,每个修改符只能使用一次,不能重复使用.未知修改符将会在验证时忽略。

 

1.2.1 redirect

句型: redirect=<domain>

将会用指定域代替当前域

在下面的例子里:当前域为example.com,发信IP1.2.3.4

“v=spf1 redirect=example.net”

如果example.net没有SPF记录,返回”unknown”的错误

假设example.netSPF记录是”v=spf1 a –all”

查询example.netA记录,如果匹配1.2.3.4,通过”(Pass);如果不匹配,该行为失败,接着开始执行-all机制.

 

1.2.2 exp

句型: exp=<domain>

提供解释性的语句.如果SMTP接收者拒绝一个信息,它可以包含一个返回给发信者的解释信息.SPF记录里可以包含一个解释字符串给发送者,告之相关的错误信息或需要访问的帮助页面等.

处理过程

错误代码

验证SPF记录的结果只能有如下几在种:

结果

解释

可做行为

Pass

SPF记录指定,主机被允许发送

接受

Fail

SPF记录指定,主机不被允许发送

拒绝

SoftFail

SPF记录指定,主机不被允许发送,但可以再发送

接受但做标记

Neutral

SPF记录详尽,但不能确认其有效性

接受

None

SPF记录或SPF记录验证无结果

接受

PermError

永久错误(例如不正确的格式记录)

未指明

TempError

临时错误发生

接受或拒绝

 

常见问题

Legenda
>Syntax >Type >Meaning
-all Fail Fail all servers not listed here (recommended option)
~all Soft fail Give extra scrutiny to servers not listed here
?all Neutral Unsure whether e-mail infrastructure is secure
+all Pass There’s no infrastructure security at all


其它参考:
http://www.openspf.org/SPF_Record_Syntax

发表在 mail | 标签为 | spf已关闭评论