2013年5月29日星期三

postfix邮件中继的几种方案

终于搞定了几种MTA邮件relay的情况:1,最普通的25,利用163,yahoo.com等邮件主机转发;2,加密的587如gmail,163等中继;3,没有合法证书的邮件主机,如公司这种,必须要导入证书的类型。现在终于要吧全部工作起来了。

我的配置文件:main.cf如下
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#smtpd_use_tls=no
smtpd_use_tls=yes
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
##### client TLS parameters #####
smtp_tls_loglevel=1
#broken_sasl_auth_clients = yes
#smtp_tls_security_level=may
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = login,plain
#smtp_tls_security_level=none
smtp_starttls_timeout=10s
smtp_tls_security_level=may
#smtp_tls_security_level=encrypt 
#上面一行为gmail等使用
#smtp_sasl_mechanism_filter = plain, login
smtp_tls_note_starttls_offer = yes
smtp_sasl_password_maps=hash:/etc/postfix/passwd
#smtp_sasl_security_options =noplaintext,noanonymous
smtp_use_tls = no
#smtp_tls_security_level=NONE
#smtp_sasl_security_options =noanonymous
smtp_sasl_security_options =
smtp_always_send_ehlo = yes
smtp_generic_maps=hash:/etc/postfix/generic
smtp_tls_CAfile =/etc/postfix/cacert.pem
CApath = /etc/ssl/certs
tls_random_source=dev:/dev/urandom
# information on enabling SSL in the smtp client.
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
#myhostname = localhost
myhostname = bt.foo.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination =  localhost,bt.foo.org,localhost.foo.org
#mydestination = localhost
#relayhost =[smtp.163.com]:465
#relayhost =[smtp.163.com]:994
#relayhost =[smtp.163.com]
#relayhost =[smtp.gmail.com]:587
relayhost =[smtp.XXXX.com]:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all


上面是没有合法证书的公司邮箱使用。gmail/163/yahoo的配置也保留了,只是注释掉了

2013年5月20日星期一

10分钟按要求写了1553字

10来分钟左右,紧急写了1553字。主题是
传统安全手段的缺陷,
互联网业务的安全特色

明天贴上来分享一下

2013年5月19日星期日

昨天的错误

昨晚SVN服务器迁移过程中的错误为

visualsvn post请求的响应返回无效XML

VisualSVN之迁移

前几天还在得意于50GB的数据加密保存,实时远程备份,通过rsync把变化的数据增量备到各地,然后放在加密的卷标里面。今天却又碰到一件意想不到的事情。

     SVN的历史版本太多了,加上每天的导入数据,迅速把50GB空间占满,下午一查,只有700MB左右,再一刷新就只有600MB,眼见着迅速降低下去,原来规划的空间一点点地消失。
     赶紧删除无用的工具软件类,delete一番后,发现一点儿改善也没有。网上一搜,全是执行删除操作后,如何进行恢复的技巧说明。但查一查如何彻底删除、真正删除,却 丁点儿有效的信息也找不到。我是第一次接触这东西,原来没想到还有这么多道道,删除后文件根本找不到了,却没有真正删除,还存在某个地方等着删除。想想也是,SVN本来就是为了方便回朔地某个版本,肯定保存了每个版本的变化信息,有什么新旧东西,都会存起来。linux下的估计有一堆办法,windows下的VisulaSVN如何彻底删除,真是找不到任何有用的资料。
   急切间,身边人来人往,有问服务器为什么不能访问的,有问更新出错的,有问无法下载的,有问连不上服务器的,各种各样的,思路总是打断,每个人来问,都要抬头应付一下。
   最着急如何恢复,打电话问了经常折腾SVN的同事。办法是全部下载了数据,再建个新的,再上传上去。只保留最后一个版本。或者把旧服务器数据DUMP,再import到新服务器。这些方法都太费时间,如何更快解决呢?
    原来备一个镜像。直接在另一台服务器上面,把VisualSVN资源目录指向本地镜像数据。start后,成功打开。在IE及SVN客户端上访问正常,能打开所有文件,权限也都正常。但在本地修改后,再进行commit,出现报错:
   POST   。。。。XML 3 line,(valide token)
  具体错误信息忘了,好像是说非法token,无法更新。

   于是开始了下面的折腾过程。共试过如下方法:
    两台服务器上面数据是一致的,唯一不同的VisualSVN的安装后参数。于是查看有哪些不同。有个server.pem不同。同步后,仍然失败。
    rsync 加上delete参数,然后再加上update参数,还是失败。同样错误又出现。
    是否是文件权限问题呢?rsync同步时,把文件属性、属组、权限、时间等,全是同步过来。仍然失败。
     再回头折腾旧服务器。新加入磁盘,将其作为SVN服务器上的一个目录文件,这办法也不妥当。全是小文件,接进去也无法有效扩展容量。况且全是加密的VOL,要接进去也有难题。失败。
     在网上寻找命令行下删除旧版本数据,失败。
     双回头折腾新服务器,重点检查文件权限问题。终于在打开文档数据时,弹出一个权限错误的提示。把VisualSVN server admin的用户加入读写权限后,一切运行正常,太让人高兴了。
    至此,通过rsync镜像,然后设置权限,顺利完成到大硬盘空间服务器的迁移。太棒了,一切恢复正常,一切可以继续。
     

2013年5月16日星期四

经常在孩子面前唠叨的几本书

做游戏一般,要在孩子面前经常唠叨的几本书:

蒙求
龙文鞭影
幼学琼林
三字经
开明文言读本

后二本是我自己看着玩的:汉书,史记

2013年5月8日星期三

数据加密与备份的一些杂想

 
这几天要把50GB左右的数据进行保护,防止有人偷走,防止有人破坏,因为都可以物理接触,而这数据影响了一个公司的生死存亡。所以,除了管理上的种种防护外,在技术上对服务器进行了如下保护:
1、所有数据使用密钥加密,硬盘上的每个扇区都做了扰乱,密钥存在远程的服务器上,每次想打到本地硬盘数据,需要ssh登录到凭证服务器上面,cat mykey,然后在本机上保存到一个临时文件,临时文件用脚本控制,1分钟后其文件内容就会变成随机数并进行后续不断的变化。用远程的key,加上强密码打开加密的硬盘内容,映射到一个新开的硬盘逻辑符上面。
2、打开应用服务,把新开的逻辑硬盘进行正常的读写。用户不多,所以加密后的读写速度还可接受,以几年前的硬盘配置,读写速度大约为50MB/s+左右,网络多用户以浏览器访问时,大约为每个用户大约2MB/s的读写速度,感觉还可以吧。
3、因为最初安装都是windows系统,让人很不顺手,熟悉了linux下的种种快捷的解决方案,windows像个公子哥一般诸多精细的照顾才行。
4、windows下的文件同步备份,使用了rsync for windows解决,使用过程中产生些问题,可见上篇文件中的描述;
5、rsync备份使用密钥方式,密钥同样放置在加密盘上。并在rsyncd.conf设置只允许备份服务器一个连接,只允许受限IP连接。
6、设置定时任务,每晚22:00开始自动备份;
7、加密后,机器即使直接让人搬走,也难以解密出明文数据。备份后,即使主机被人恶意破坏,仍然也可快速恢复。
8、加密硬盘工作态的安全,以服务器的安全加固解决。数据流转路径上的安全问题,没在本次讨论之列。
9、客户端上的数据安全,文档汇聚后的安全,隐藏的传输通道如蓝牙电力猫等,仍然需要进一步解决。

数据加密与备份的一些杂想

这几天要把50GB左右的数据进行保护,防止有人偷走,防止有人破坏,因为都可以物理接触,而这数据影响了一个公司的生死存亡。所以,除了管理上的种种防护外,在技术上对服务器进行了如下保护:
1、所有数据使用密钥加密,硬盘上的每个扇区都做了扰乱,密钥存在远程的服务器上,每次想打到本地硬盘数据,需要ssh登录到凭证服务器上面,cat mykey,然后在本机上保存到一个临时文件,临时文件用脚本控制,1分钟后其文件内容就会变成随机数并进行后续不断的变化。用远程的key,加上强密码打开加密的硬盘内容,映射到一个新开的硬盘逻辑符上面。
2、打开应用服务,把新开的逻辑硬盘进行正常的读写。用户不多,所以加密后的读写速度还可接受,以几年前的硬盘配置,读写速度大约为50MB/s左右,网络多用户以浏览器访问时,大约为每个用户大x2MB/s的读写速度,感觉还可以吧。
3、

关于windows下的远程文件同步

最近几周需要做非常重要的文件保护,数据大量50GB左右,而且时时更新。
本地的文件同步,有许多好的解决方案,也有许多开源的工具。但远程的文件同步,原来所知道的就只有linux下的rsync,windows下用什么呢?而且远程异地的数据,全都是放在加密盘上,实实更新,需要非常好的增量备份工具才能解决。
     万事不决问google,搜了下确实有windows下的rsync版本,名字叫cwrsync,最新版本为4.0.5,不用翻墙就能下到,真让人高兴。
    3+MB大小,安装迅速。配置和linux下类似。把常见的几个问题分享下
1、默认下为匿名访问,可在windows下使用用户名密码,添加两行
auth users = myname
secrets file = etc/mypasswd
其中mypasswd的内容格式为:
myname:passwdishere
不过相比密码方式,更好的还可以使用密钥方式。可参考ssh密钥登录,这类文章网上很多,只要设置几下就能完成。
2、安装后,需要自建几个文件,否则会报错faild to open lock file
rsyncd.pid
rsyncd.lock
有时出现rsync服务无法启动时,可能是这几个文件权限存在变化,需要将这几个文件清空删除,再重新建立就可以
了。
3、因为在多台服务器上安装,有台服务器在忘记情况下,多安装了一次,导致出现报错:
无法启动rsync服务
错误:1069,由于登录失败而无法启动服务
出现此错误后,重装不管用,把安装过程中自建的用户SvcCWRSYNC设为administrator组,仍然不管用。然后在服务器中,把administrator管理员用户设置为登录账号,仍然出现同样提示。
解决方法为:将SvcCWRSYNC重设密码,并在rsync服务中,将登录用户的密码也进行手工设置,最后顺利启动。
    出现问题时,我们要按照机器提示,寻找最贴近的线索,所有的真相,都在错误提示里。
4、rsync客户端登录时,会提示invalid uid nobody的错误而退出,此时搜索google,大量文章说,只要在服务端配置文件rsyncd.conf中,添加两行
uid = administrator
gid = administrator
照此操作后,客户端仍然出现错误提示,只是变为
invalid uid administrator
  按照通常的linux设置习惯,屏蔽掉这两个值,设为
uid = 0
gid = 0
此时登录再也没有报错,顺利登录。
5、最后,是成功的演示,如下在客户端输入
rsync -avzP --progress myname@192.168.1.1::rsync /cygdrive/h/
这样就把异地的文件,迅速备份到本地了。

注意,上面参数的rsync,是远程服务器rsyncd.conf中的定义,一定不要搞错,否则会提示,未知的模块错误