通过 imapsync 实现邮件服务器迁移 (支持 IMAP 的邮箱)

本帖记录利用 imapsync 工具,从CentOS服务器上将Postfix邮箱转移到新的CentOS主机上的方法。
imapsync 用于同步两个imap邮箱 (仅适合迁移邮箱或者备份,不适合同步两个有用户同时访问的 imap 帐号)

首先在新的服务器上安装好邮件系统,建好相同的邮箱。

接着安装 imapsync (可以装在要同步的任意一台服务器上,也可以装在第三方的服务器上)
yum install imapsync

以下面的数据为例:
旧的邮件服务器为 mail1.mazentop.com
新的邮件服务器为 mail2.mazentop.com
旧的邮箱地址 support@mazentop.com
新的邮箱地址 support@mazentop.com
旧的邮箱密码保存在文件 /etc/mailpass1
新的邮箱密码保存在文件 /etc/mailpass2

那么以下命令可以将邮箱 support@mazentop.com 中的所有内容,从服务器 mail1 复制到服务器 mail2 上的 support@mazentop.com 邮箱中:
imapsync --host1 mail1.mazentop.com --user1 support@mazentop.com --passfile1 /etc/mailpass1 --host2 mail2.mazentop.com --user2 support@mazentop.com --passfile2 /etc/mailpass2

无法访问Godaddy DNS服务器,域名解析被屏蔽

今天发现我的好几个网站从国内无法访问,但是国外打开正常。从国内Ping出现找不到DNS服务器,我使用的是Godaddy的免费DNS服务器: mns01.domaincontrol.com 和 mns02.domaincontrol.com ,看来又被中国的GFW防火墙给屏蔽了。

只好转用国内的DNS解析,dnspod.cn 提供免费的DNS解析服务,功能还可以,但一个帐号只能有一个免费的域名。

如何暂停PowerShell直到一个外部进程执行结束后返回?

在PowerShell 里启动Win32的外部进程后,控制会立即返回PowerShell并执行下一条指令。如何让PowerShell停止执行下一条指令,等待前面的进程运行结束呢?

可以使用 [diagnostics.process] 来启动Windows批命令或者其他应用程序,并通过WaitForExit等待进程结束
$batfile = [diagnostics.process]::Start(“D:\Demo\My_Script.bat”)
$batfile.WaitForExit()

然后PowerShell才继续执行余下的指令。

MSSQL的SSIS中获取FTP文件列表的方法

MSSQL 2005 的SSIS里提供的FTP包括以下功能:
Send files 上传文件
Receive files 接收文件
Create local directory 创建本地目录
Create remote directory 创建远程目录
Remove local directory 删除本地目录
Remove remote directory 删除远程目录
Delete local files 删除本地文件
Delete remote files 删除远程文件

没有可以用于列表、下载所有FTP服务器上文件的功能。

SSIS中的 Foreach Loop Container 功能只适用本地目录、文件,无法处理FTP服务器上的目录和文件。

我们可以通过 Script task 脚本功能来实现FTP远程文件处理。下面的SSIS脚本演示获取远程FTP的所有 Demo*.xls 文件,然后下载这些文件,并在FTP服务器上删除所有已下载的文件。

其中 SetWorkingDirectory 可以用于指定FTP上的工作目录。

    Public Sub Main()
        Dim result As Integer
        Dim conMan As ConnectionManager
        Dim ftp_client As FtpClientConnection
        Dim sFolderNames() As String
        Dim sFileNames() As String
        Dim sFileName(0) As String

        conMan = Dts.Connections("MyFTP")
        ftp_client = New FtpClientConnection(conMan.AcquireConnection(Nothing))

        ftp_client.Connect()
        ftp_client.SetWorkingDirectory("incoming")
        ftp_client.GetListing(sFolderNames, sFileNames)

        For Each fileName As String In sFileNames
            sFileName(0) = fileName
            If fileName.EndsWith("xls", StringComparison.OrdinalIgnoreCase) And fileName.StartsWith("Demo", StringComparison.OrdinalIgnoreCase) Then
                ftp_client.ReceiveFiles(sFileName, "D:\Test\ftp_data\", True, False)
                ftp_client.DeleteFiles(sFileName)
            End If
        Next fileName

        ftp_client.Close()

        Dts.TaskResult = Dts.Results.Success
    End Sub

现在所有需要的文件都传到本地目录,就可以使用 Foreach Loop Container 循环容器来处理了。

安装开源、免费的视频会议系统 OpenMeetings on CentOS

OpenMeetings 是一款免费、开源的网络视频会议系统,下面是在CentOS上安装 OpenMeetings 的手记。

首先确认以下系统服务正常运行
apmd
auditd
autofs
avahi-daemon
bluetooth
cpuspeed
cups
firstboot
gpm
hidd
ip6tables
iptables
irqbalance
mcstrans
mdmonitor
microcode_ctl
netfs
nfslock
pcscd
portmap
restorecond
rpcidmapd
rpcsvcgssd
sendmail
smartd
xfs
yum-updatesd

更新系统软件
yum update

安装好 MySQL 数据库
MySQL配置文件 /etc/my.cnf ,增加中文支持
[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'

[client]
default-character-set=utf8

重启MySQL服务
/etc/init.d/mysqld start

如果不能关闭防火墙,请开放以下端口
1935 (RTMP), 8088 (基于HTTP的RTMP), 5080 (HTTP), 4445 (桌面共享), 8443 (基于SSL的RTMP)

导入 rpmforge 安装源
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

修改启动配置文件 /etc/rc.local,增加一行
/usr/lib/openoffice.org3/program/soffice "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -nologo -headless -nofirststartwizard &
如果是64位系统,则为
/usr/lib64/openoffice.org3/program/soffice "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -nologo -headless -nofirststartwizard &

安装以下所有的软件包
yum install freetype freetype-devel fontconfig fontconfig-devel java-1.6.0-openjdk-devel libtiff libtiff-devel libjpeg-devel libjpeg giflib giflib-devel libpaper libpaper-devel xml-commons-apis libpng libpng-devel libxml2 libxml2-devel fftw3 fftw3-devel cairo cairo-devel flac flac-devel wavpack wavpack-devel libsndfile libsndfile-devel libmad libmad-devel yasm-devel yasm gcc gcc-c++

安装 OpenOffice 产品
yum install openoffice.org-base openoffice.org-headless openoffice.org-writer openoffice.org-impress openoffice.org-calc
yum groupinstall 'Office/Productivity'
yum install openoffice.org-headless

修改文件 /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"

安装中文字体支持
yum -y install fonts-chinese fonts-ISO8859-2-75dpi

安装 Ghostscript
yum install ghostscript

安装 Lame
yum install lame

安装 SWFTOOLS
yum install swftools

安装 ImageMagick
yum install ImageMagick

安装 FFmpeg
yum install ffmpeg

安装 SoX
yum install sox

准备 openmeetings 软件包
( 最新版本从Google 代码获得,目前为 v1.6.2 release 3675 )
cd /usr/src
wget http://openmeetings.googlecode.com/files/openmeetings_1_6_2_r3675.zip
unzip openmeetings_1_6_2_r3675.zip -d om

cd /usr/src/om/webapps/openmeetings/conf
cp mysql_hibernate.cfg.xml hibernate.cfg.xml

修改OpenMeetings 的配置文件 /usr/src/om/webapps/openmeetings/conf/hibernate.cfg.xml
输入数据库用户名、密码,其中 //localhost/openmeetings 是数据库地址和数据库名称 (可以先建好这个空数据库)

cd /usr/src/om
nohup ./red5.sh &

启动openoffice 服务
nohup /usr/lib/openoffice.org3/program/soffice "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -nologo -headless -nofirststartwizard &
如果是64位系统,则为
nohup /usr/lib64/openoffice.org3/program/soffice "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -nologo -headless -nofirststartwizard &

开始安装 OpenMeetings,输入下面的地址
http://www.域名.com:5080/openmeetings/install