Entries in the ‘开源软件’ Category:

Linux配置IMAP服务器

IMAP是移动办公中必备的功能, 上网的地方多了, 上网的设备多了, 用的操作系统多了, 什么时候都需要收邮件, 因此不能像POP3那样把邮件收到本地, 而是要放在"云"里.

学校的邮箱只支持POP3, 不支持IMAP. 如果有条件, 我们可以在Linux上自己架设IMAP服务器, 可以把邮件从POP3邮箱下载下来, 放到本地的IMAP服务器上. 通过自己架设的IMAP服务器, 可以实现邮件的移动办公.

1. 安装fetchmail

fetchmail可以把邮件从服务器上下载到本地, 首先安装

apt-get install fetchmail

然后编辑fetchmail的配置文件/etc/fetchmailrc. 下面的配置文件每隔10分钟就会将pop3.example.com服务器上remoteuser的邮件下载到本地localuser的邮箱中.

set postmaster "localuser"
set no bouncemail
set daemon 60

poll pop3.example.com proto pop3 interval 10
user ‘remoteuser’ there with password ‘remotepass’ is localuser here

最后, 确认/etc/default/fetchmail文件中有START_DAEMON=yes这一行. 重启系统之后, fetchmail服务就会启动.

2. 配置Maildir

用fetchmail下载下来的邮件将通过IMAP提供给邮件客户端访问. IMAP支持用户建立多个邮件文件夹, 因此本地用户推荐使用Maildir作为邮件存储方式, 而不是mbox.

运行dpkg-reconfigure exim4-config, 所有其他选项都选择默认. 在Delivery method for local mail选项事, 选择Maildir format in home directory. 此时, fetchmail收下的邮件将存储在用户$HOME/Maildir目录下.

3. 配置dovecot

dovecot提供了Linux下POP3和IMAP服务器的实现, 我们需要安装其IMAP服务器模块. 运行下面命令:

apt-get install dovecot-imapd

Debian默认的配置文件基本上都不需要修改. 但由于我们使用Maildir作为本地邮件存储, 因此需要修改mail_location参数为maildir:~/Maildir. 下面是一个完整的dovecot配置文件的例子(/etc/dovecot/dovecot.conf)

protocols: imap imaps
login_dir: /var/run/dovecot/login
login_executable: /usr/lib/dovecot/imap-login
mail_privileged_group: mail
mail_location: maildir:~/Maildir
auth default:
passdb:
driver: pam
userdb:
driver: passwd

重启系统之后, IMAP服务器就可以登录了. 用户可以配置邮件客户端, 将邮箱服务器设置为IMAP服务器, 地址为Linux服务器的地址, 用户名和密码就是该机器上localuser的用户名和密码.

4. 配置SpamAssassin(可选)

Linux上提供非常丰富的邮件处理功能, 如垃圾邮件识别, 病毒邮件检查等. SpamAssassin就是一款非常出色的垃圾邮件识别引擎.

在此之前, 用户先通过邮件客户端在IMAP帐号里建立一个专门存放垃圾邮件的文件夹, 例如叫Spam. 然后, 在Linux服务器上, 首先安装spamassassin这款软件.

apt-get install spamassassin

为了把spamassassin和Linux邮件系统上的其他组件联动起来, 实现自动的垃圾邮件过滤, 我们需要用到procmail. 首先在用户的$HOME目录下建立一个.procmailrc文件, 其中包括以下内容

PATH=/usr/bin:/bin
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/cur
LOGFILE=$HOME/procmail.log

# spam check
:0fw
| /usr/bin/spamassassin
# filter out spams
:0
* ^X-Spam-Flag: YES
* ^X-Spam-Level: \*\*\*\*\*
.Spam/cur

此时通过所有fetchmail收下的邮件, 都会自动经过spamassassin的过滤, 评分大于5分的邮件, 不会进入收件箱, 而是放在Spam文件夹下.

至此, Linux下的IMAP服务器已经配置完成了.

Tags: , , , , ,

Leave a Comment

Debian下网卡对802.1Q VLAN的支持

现在的交换机大部分都支持802.1Q VLAN了, 通过VLAN可以将一个交换机上的不同端口分隔成隔离的链路, 也可以将多个交换机上的端口连接到同一个链路.

有时候, 我们可能希望一台机器同时连入多个VLAN, 最好是通过一块网卡. 也就是说, 让一个网络端口同时属于多个VLAN. 要实现这样的功能, 需要做两个方面的配置:

交换机配置

首先要把该主机对应的交换机端口设置为混合端口, 只有混合端口可以同时加入多个VLAN, 下面是Huawei交换机的配置片段:

interface Ethernet0/1
port link-type hybrid
port hybrid vlan 10 20 tagged
port hybrid pvid vlan 10

上述配置让交换机的1号端口成为混合端口, 并同时加入id号为10和20的VLAN, 主VLAN号是10.

Debian主机配置

首先需要在Debian上安装vlan配置工具.

apt-get install vlan

然后, 我们可以在Debian的网络配置文件中, 配置每个VLAN对应的网卡. 下面是/etc/network/interfaces文件的片段:

auto eth0.10
iface eth0.10 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.254

iface eth0.20 inet static
address 192.168.2.10 
netmask 255.255.255.0

上述配置文件配置的主机, 分别有两块虚拟网卡eth0.10, eth0.20, 对应VLAN 10和VLAN 20所在的网络.

除了配置文件之外, 管理员还可以通过vconfig命令, 增加或者删除VLAN.

Tags: , , ,

Leave a Comment

Linux下设置主机的FQDN

FQDN是Fully Qualified Domain Name的缩写, 含义是完整的域名. 例如, 一台机器主机名(hostname)是www, 域后缀(domain)是example.com, 那么该主机的FQDN应该是www.example.com.

题外话, 其实FQDN最后是以"."来结尾的, 但是大部分的应用和服务器都允许忽略最后这个点.

Linux允许用户通过hostname命令查看并设置主机名. 用户也可以通过hostname -f命令得到该主机的FQDN. 但是, 却没有直接设置FQDN的命令.

实际上, 设置Linux的FQDN可以通过两种方法实现.

第一种, /etc/hostname + /etc/hosts文件组合

首先在/etc/hostname文件中设置主机名, 假设是

www

然后在/etc/hosts文件中增加一行主机记录, 第一个字段是该主机的IP地址, 第二个字段是你希望设置的FQDN, 最后是刚刚设置的主机名, 如下

A.B.C.D www.example.com www

设置好之后, 通过hostname -F /etc/hostname更新主机名. 这时, 通过hostname -f看到的FQDN就应该是: www.example.com

第二种, /etc/hostname + /etc/resolv.conf组合

如果Linux不能在/etc/hosts文件中找到hostname对应的记录, 就会试图从resolv.conf文件中得到主机的域名后缀(domain name). 例如, 这样的/etc/resolv.conf文件

domain example.com
search example.com
nameserver W.X.Y.Z

根据配置文件中的domain后缀example.com, 加上主机名www, Linux会试图自动拼接成一个候选FQDN: www.example.com. 但这个候选FQDN还需要进一步验证.

Linux通过DNS服务器W.X.Y.Z解析候选FQDN, 如果解析失败, 生成FQDN过程就失败了. 如果解析成功, 则会返回www.example.com这个域名的正式名称. 也就是说, 如果在DNS服务器的记录中, www.example.com这个域名是指向server.example.com的CNAME记录的话, 而server.example.com才是A记录. 返回的FQDN就是server.example.com, 而不是www.example.com.

以上就是Linux下设置FQDN的方法.

Tags: , ,

Leave a Comment

grub2和GPT兼容问题

说来挺丢脸的, Debian用了将近8年, 直到前一阵才提交了生平第一个Debian的bug, 关于grub2无法安装至使用GPT分区表硬盘的问题. Debian的package maintainer很热情的询问了关于这个bug的一些问题, 然后告诉我这个bug可能是grub本身的问题, 而不是Debian打包中出现的问题, 建议我报告到upstream maintainer那里去.

后来想想比较麻烦, 我就没再提交. 结果昨天又收到Debian包管理员Robert Millan的来信, 让我试试刚刚上传到experimental的新版本grub2(1.96+20080831-1), 说他认为我的bug已经在这个版本中解决了, 还把理由称述在bug report的注释里面了. 面对这么负责的管理员, 我除了感动, 还能说什么呢.

为了试用在experimental中的软件包, 需要首先修改/etc/apt/sources.list文件, 增加下面一行

deb http://debian.ustc.edu.cn/debian ../project/experimental main

然后安装experimental中的grub2

apt-get update
apt-get -t experimental install grub2

安装好之后, 使用下面的命令把grub2安装到GPT硬盘上, 发现已经可以成功安装了.

sudo grub-install '(hd0)'

Tags: , ,

Leave a Comment