VPS升级Debian的几点小事项

VPS升级Debian的几点小事项

数据中心升级,要求所有节点最好是64位系统。而我们的节点不幸是32bit系统,因此不得不大动干戈地重新构造系统。

原来的系统是采用Ubuntu 10.04,年代比较久了。这次升级打算全部换成Debian7,真是no zuo no die。虽说两个系统相差不大,但是其中的一些细节还是会坑死人的。

1、bash问题

Debian7中root用户采用bash,如果新创建一个用户,默认居然采用sh,无法理解。因此需要修改/etc/passwd文件,将用户对应的shell修改为bash即可。

2、sudoer问题

这个不是大问题,无非就是修改/etc/sudoers文件,手工将用户加入sudo用户列表中即可。(升级完成后,最好将用户剔出sudoer列表,只保留root用户)。

3、postfix与dovecot

这些配置折腾了几乎一天。在Ubuntu环境中,很容易搞定,ubuntu非常体贴的提供了一个安装包dovecot-postfix,几乎不需要配置就可以转起来。而Debian7则需要手工进行配置。首先dovecot必须安装以下几个包:

apt-get install dovecot-common dovecot-core dovecot-pop3d

在配置之前,首先要弄明白一些关键概念:

  • Postfix是发送邮件服务器,提供SMTP服务;
  • Dovecot是接收邮件服务器,提供IMAP/POP服务。
  • Postfix自身不鉴权,通过SASL与其他应用(例如SASL服务、POP3服务等)交互来实现鉴权。

通常网上的文章都会采用SASL服务器或者连接MySQL数据库等来实现一个非常复杂的邮件服务系统。而我们的需求没有这么夸张,debian系统的用户就是email用户,不需要进行区分。因此我们采用dovecot来鉴权。

跑个题先,网上居然有文档配置postfix时不进行鉴权,简直是纯找死的节奏,这种情况下,任何人都可以利用他的服务器发送邮件,过不了多久,相信全世界的邮件服务器都会视其为垃圾邮件服务器,直接屏蔽掉。

因此配置的关键点在于以下几点:

  • 告诉postfix,通过dovecot鉴权。
  • dovecot创建与postfix之间的管道,接受postfix的鉴权请求。
  • dovecot采用系统用户的信息直接鉴权。

3.1 配置dovecot

这里臭骂一下Debian。把dovecot的配置拆成N多文件,乱七八糟,有必要么?网上的参考文档多半是基于RHEL或者CentOS,基本都是在一个文件中进行配置(Ubuntu 10.04也基本是一个文件),Debian这种方式貌似很合理,实际操作起来更让人纠结。

首先修改/etc/dovecot/conf.d/10-auth.conf文件,设定以下参数:

disable_plaintext_auth = no
auth_mechanisms = plain login

接着修改/etc/dovecot/conf.d/auth-system.conf.ext文件,在文件尾添加以下配置:

service auth {
    unix_listener /var/spool/postfix/private/auth-dovecot {
        mode = 0660
        user = postfix
        group = postfix
    }
}

简要说明:在这个文件中,可以看到以下信息,默认就是采用系统用户鉴权。其中的passwd就是指/etc/passwd文件。

userdb {
  driver = passwd
}

而我们添加的信息,其实就是为postfix创建一个管道,准备接受postfix的鉴权请求。管道名称就是auth-dovecot,创建在/var/spool/postfix/private目录下。这个信息在postfix配置中需要用到。

3.2 配置postfix

debian系统中的postfix基本配置与其他linux版本没有太大差别,无非就是修改一些hostname信息等。鉴权配置需要修改,修改/etc/postfix/main.cf文件,在文件尾添加以下信息:

home_mailbox = Maildir/
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth-dovecot
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sender_restrictions = reject_unknown_sender_domain

其中关键部分就是蓝色字体标识的部分。”smtpd_sasl_path”项就是在dovecot中配置的管道路径(在这些配置项上,我几乎摔得满头是包)。

完成上述配置后,重启dovecot和postfix服务即可:

service dovecot restart
service postfix restart

4、SSH

处于安全因素的考虑,修改默认的SSH登录端口以及禁止root用户远程登录。修改/etc/ssh/sshd_config文件:

Port 1234
PermitRootLogin no
Comments are closed.