Browsed by
Category: 杂文

随便记点什么

Pi3开卖了

Pi3开卖了

第三代树莓派正式开卖,感觉改进很大,值得入手。最吸引人的除了CPU升级为64位ARM外,还有就是内置WiFi!想当初为了支持USB接口的WiFi,那是一顿折腾啊,Pi3就省事多了。

话说现在手头上还是Pi一代(model B),用起来一直很稳定,相当具有可玩性。

新闻链接:https://www.raspberrypi.org/blog/raspberry-pi-3-on-sale/

 

 

vbox共享目录权限问题

vbox共享目录权限问题

主机是win10,客机是debian7,主机共享文件夹给客机。通常该共享目录会映射到/media目录下。但是使用dolphin无权打开改文件夹。

需要手工将当前用户(mss)加入vboxsf组:

sudo usermod -a -G vboxsf mss

注销当前用户再重新登陆后,即可正常使用共享文件夹。

修改完用户组信息后,可以使用以下命令查询用户的组信息:

groups mss
“r”与”rb”

“r”与”rb”

最近做一个测试,模拟收发和解析一些SIP消息。方式方法很简单:将消息存在一个文本文件(.txt)中,读取该文件,然后解析、发送等操作即可。

因为是文本文件,因此想当然地就调用fopen函数”r”模式读取好了:

fopen("d:/demo.txt", "r");

然而让人惊讶的是:读取的结果和实际消息居然有差异,直接导致消息解析失败。百思不解之下不得不进行调试,结果发现丢掉了所有的’\r’符号。

从问题的现象看,感觉是windows平台的C库在读取文本文件时,擅自判断了CRLF(’\r\n’),并错误认为CR符号多余,从而跳过了所有该符号。这个处理只是猜测,对一般的文本处理当然没有问题。而对绝大部分基于文本的互联网协议而言,例如SIP、HTTP、EMAIL等,CRLF有非常重要意义,丢失CR符号无疑会产生非常严重的问题。

解决方法也很简单,就是不再当成文本文件读取,而采用二进制文件读取模式,无差别读取所有内容即可:

fopen("d:/demo.txt", "rb");

补充:在Debian中做了同样的测试。结果表明:linux系统的C库以’r’方式打开文本文件时,不会自作主张地将CR符号去掉,与预期结果一致。

dovecot配置上一点改动

dovecot配置上一点改动

Debian系统中的Dovecot套件升级了,一直工作正常,没怎么在意升级的影响。今天在syslog中看到一些告警:

dovecot: config: Warning: NOTE: You can get a new clean config file with: doveconf -n > dovecot-new.conf
dovecot: config: Warning: Obsolete setting in /etc/dovecot/conf.d/auth-system.conf.ext:77: add auth_ prefix to all settings inside auth {} and remove the auth {} section completely

从告警信息看,“/etc/dovecot/conf.d/auth-system.conf.ext”有一些变化,重新修改后可以去除这个告警。比如,原文件中内容为:

auth default {
    socket listen {
        client {
            path = /var/spool/postfix/private/auth-dovecot
            mode = 0660
            user = postfix
            group = postfix
        }
    }
}

新配置修改为以下内容:

service auth {
    unix_listener /var/spool/postfix/private/auth-dovecot {
        mode = 0660
        user = postfix
        group = postfix
    }
}
常用SMTP服务器地址

常用SMTP服务器地址

简单记录一下各大常用电子邮箱服务商的SMTP服务器地址。以下邮件服务器默认都没有打开SMTP/POP功能,需要在账户设置中明确打开该项功能。

1、outlook.com,端口25或者587。用户名应为邮箱地址的全称,例如demo@msn.com等。

smtp-mail.outlook.com

2、gmail.com,端口25或者587。用户名应为邮箱地址全称,例如demo@gmail.com等。

smtp.gmail.com

gmail还要允许低安全度程序接入。似乎在google看来,SMTP属于安全度比较低的技术,尽管SMTP也是支持同样的TLS加密连接。

3、qq.com,端口为25或者587。用户名应为邮箱地址全称,例如demo@foxmail.com。

smtp.qq.com
制作deb安装包遇到的两个问题

制作deb安装包遇到的两个问题

Ubuntu软件中心在安装deb软件时,对一些细节的检查比Debian要严格一些。例如,我们的软件安装包在Debian系统安装时不会提示错误,而在Ubuntu系统中则会提示错误。当然,用户可以选择忽略这些告警提示并继续安装过程,但这样始终观感不佳,因此在网上搜了一下(感谢google,鄙视百度和bing)解决方法,希望能帮到有类似问题的朋友。

E: … maintainer-name-missing

这个错误最初让人感觉困惑,因为在control文件中是设置了maintainer字段的:

Maintainer: iloveu@myvoipapp.com

查到了Debian的资料,要求Maintainer字段的内容遵循RFC822规范,只写一个email地址是不对的。标准格式应当是“用户名”+email地址,例如以下格式:

Maintainer: MYVOIPAPP <iloveu@myvoipapp.com>

E: … wrong-file-owner-uid-or-gid

这个错误很容易理解,就是用户的系统中没有安装包文件的用户ID和组ID。例如,制作deb安装包的用户是John,而用户系统中没有“John”用户,则会提示这个错误。解决方法有多种,例如在制作deb安装包时切换到root用户,或者post-script中重置相关文件的用户ID和组ID等。

这些方式都有些繁琐,最简单的方式是制作deb包时使用fakeroot命令。在dpkg-deb命令前添加fakeroot即可:

fakeroot dpkg-deb -b ......
pure-ftp over TLS

pure-ftp over TLS

最近查看log,感觉有些无聊人士尝试干扰或者攻击FTP服务器,因此有必要将FTP服务修改为加密方式。最简单的方法就是采用TLS进行传输(即FTPS),确保传输过程是加密的。

目前系统为Debian7,已部署pureFTPd作为FTP服务器。打开TLS支持方法比较简单,请参考pureFTP over TLS文档。主要步骤如下(假定pureFTPd已经部署):

步骤1:打开pureFTP的TLS支持

执行命令:

echo 1 > /etc/pure-ftpd/conf/TLS

设置TLS为1,运行采用overTLS以及普通不加密方式。如果要求必须使用TLS加密方式,则应设置TLS为2。实际部署中,建议设置为2。

步骤2:创建TLS加密密钥

使用openssl创建即可:

openssl req -x509 -nodes -days 7200 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

会提示各项信息输入,照着填写即可。同时,修改pem文件的属性:

chmod 600 /etc/ssl/private/pure-ftpd.pem

完成上述配置后,重启pureFTPd即可:

service pure-ftpd restart

步骤3:FileZilla采用显式加密

在FileZilla的站点管理配置中,“通用 – 加密”项必须配置为“要求显式的FTP over TLS”,如附图所示即可。

FTP over TLS
配置FileZilla采用FTP over TLS