Arch Linux上的简单邮件服务器(Postfix + Dovecot)

Arch Linux上的简单Mailserver(Postfix + Dovecot)

作者: Jeffrey Gelens
版本:1.3
日期:04-12-2009

介绍

本教程介绍如何在Arch Linux机器或VPS上使用Postfix和Dovecot安装完整的邮件服务器。 这个具体的教程是基于我的256MB VPS。 基本的Linux知识是必需的,因为我没有详细描述每一步。

基础系统

基本形象是Arch Linux 2008.06。 启动后,最好在SSH服务器中禁用root登录名,并按如下所示创建新用户:

adduser <username>
usermod -a -G wheel,users,nobody,mail <username>

可以选择按照速度对Arch Linux镜像进行排序,但可能会加快安装速度:

pacman -Sy
pacman -S python
sed -ie'' 's/^#S/S/g' /etc/pacman.d/mirrorlist
rankmirrors -v /etc/pacman.d/mirrorlist | tee /etc/pacman.d/mirrorlist.new && mv /etc/pacman.d/mirrorlist.new /etc/pacman.d/mirrorlist

安装此设置的基本软件包:

pacman -Syu
pacman -S sudo base-devel abs

电子邮件服务器

现在我们安装了基本软件包,下一步是安装电子邮件服务器。 作为SMTP服务器,我们将安装Postgrey是防垃圾邮件的最佳工具,所以我们也要安装这些。 目前,灰名单是一种非常有效的方式来阻止垃圾邮件,而不扫描邮件本身,因此不会浪费任何CPU周期。 在我的服务器上,它阻止了大约95%的垃圾邮件,其他5%被Spamassassin照顾。 灰色唯一的缺点是传入的电子邮件正在延迟几分钟。

pacman -S postfix dovecot spamassassin procmail
groupadd -g 5001 spamd
useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin -m spamd
chown spamd:spamd /var/lib/spamassassin

垃圾邮件

根据您的喜好编辑--max-children 垃圾邮件服务器使用大量的内存,所以对于只有几个用户的邮件服务器,1个孩子很多。

/etc/conf.d/spamd

SAHOME="/var/lib/spamassassin/"
SPAMD_OPTS="-c --max-children 1 --username spamd -H ${SAHOME} -s ${SAHOME}spamd.log --pidfile /var/run/spamd.pid"

证书

首先我们必须为Dovecot和Postfix生成一些自签名证书。 它会要求一个密码,任何随机的字符串都不错,你不必记住它。

cd /etc/ssl/certs
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout mail.key -out mail.crt
openssl rsa -in mail.key -out mail.key
mv mail.key /etc/ssl/private

Dovecot

我们将设置Dovecot和Postfix以使用Maildir结构来存储电子邮件。 它将每个用户的电子邮件存储在他们的目录中,而不是在数据库中。 这对于这种设置是很好的,但是对于更多的用户来说,最好使用MySQL或PostgreSQL进行存储。 Dovecot将被设置,以便用户可以使用IMAP和IMAP(SSL)。 此外,Dovecot还具有内置SASL身份验证服务器,因此我们无需设置单独的SASL服务器,从而节省内存。

/etc/dovecot/dovecot.conf

protocols = imap imaps
disable_plaintext_auth = yes
log_timestamp = "%b %d %H:%M:%S "
ssl = yes
ssl_cert_file = /etc/ssl/certs/mail.crt
ssl_key_file = /etc/ssl/private/mail.key
mail_location = maildir:~/Maildir
mail_access_groups = mail
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
}
auth default {
  mechanisms = plain login
  passdb pam {
  }
  userdb passwd {
  }
  user = root
  socket listen {
    client {
      path = /var/run/dovecot/auth-client
      user = postfix
      group = postfix
      mode = 0660
    }
  }
}

Postfix

接下来是Postfix,配置文件非常复杂。 幸运的是,我做了所有的研究,所以你可以复制和粘贴几乎所有的东西。 以下设置仍然需要更改:

myhostname
这是邮件服务器的位置(例如mail.example.com)。
myorigin
这是电子邮件地址中的@之后的域(例如,jeffrey @ example.com )。
virtual_alias_domains
myorigin一样

/etc/postfix/main.cf

# Paths
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
# Domain settings
myhostname = mail.example.com
myorigin = example.com
mydestination = $myhostname, localhost.$mydomain, localhost
# Timeout settings and other limits
delay_warning_time = 4h
unknown_local_recipient_reject_code = 450
minimal_backoff_time = 300s
maximal_backoff_time = 1200s
maximal_queue_lifetime = 1d
bounce_queue_lifetime = 1d
smtp_helo_timeout = 60s
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 12
# SMTP settings
smtpd_tls_cert_file=/etc/ssl/certs/mail.crt
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
smtpd_tls_loglevel = 1
smtpd_sasl_auth_enable = yes
#smtp_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,
                               permit_mynetworks,
                               reject_unauth_destination,
                               check_policy_service inet:127.0.0.1:10030
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_sasl_security_options = noanonymous
# SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
# Network settings
inet_interfaces = all
inet_protocols = ipv4
mynetworks = 127.0.0.0/8
relayhost =
# Email and mailbox settings
alias_maps = hash:/etc/postfix/aliases
alias_database = $alias_maps
home_mailbox = Maildir/
virtual_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual
mailbox_size_limit = 0
# Misc
mailbox_command = /usr/bin/procmail
smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
debug_peer_level = 2
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/man
sample_directory = /etc/postfix/sample
readme_directory = no
recipient_delimiter = +

编辑master.cf让Postfix通过Postgrey过滤电子邮件(我们将谈论下一章)和Spamassassin。

/etc/postfix/master.cf

替换以下行:

smtp      inet  n       -       n       -       -       smtpd

用这两行:

smtp      inet  n       -       n       -       -       smtpd
  -o content_filter=spamassassin

并将以下三行添加到文件的末尾:

spamassassin unix -     n       n       -       -       pipe
  user=spamd argv=/usr/bin/perlbin/vendor/spamc -f -e
        /usr/sbin/sendmail -oi -f ${sender} ${recipient}

设置Spamassassin规则。 您可能需要稍微调整required_score 。 默认6.31对我来说似乎很棒。

/etc/mail/spamassassin/local.cf

rewrite_header Subject *****SPAM*****
required_score 6.31
report_safe 1
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1

/ etc / procmailrc

垃圾邮件可以通过创建此文件自动复制到垃圾文件夹:

DROPPRIVS=yes
DEFAULT=$HOME/Maildir/
MAILDIR=$HOME/Maildir/

:0:
* ^X-Spam-Status: Yes
.Junk/

创建用户帐户

对于每个电子邮件用户创建专用帐户,如果您不想手动执行所有操作,请创建自己的脚本。

useradd -m -G mail -s /sbin/nologin <username>
cd ~<username>
umask 077
mkdir -p Maildir/{cur,new,tmp}
mkdir -p Maildir/.Drafts/{cur,new,tmp}
mkdir -p Maildir/.Sent/{cur,new,tmp}
mkdir -p Maildir/.Trash/{cur,new,tmp}
chmod 0700 Maildir/{cur,new,tmp}
chmod 0700 Maildir/.Drafts/{cur,new,tmp}
chmod 0700 Maildir/.Sent/{cur,new,tmp}
chmod 0700 Maildir/.Trash/{cur,new,tmp}
chown -R <username>:users *

确保将新用户的电子邮件地址添加到虚拟用户地图。

/ etc / postfix / virtual

jeffrey@example.com jeffrey@localhost

执行

postmap /etc/postfix/virtual

保存该文件后。

Postgrey

Postgrey不在默认的pacman存储库中,所以让我们从AUR下载它。 请确保以普通用户身份执行以下命令, 而不是以root身份执行。

cd ~
wget http://aur.archlinux.org/packages/yaourt/yaourt.tar.gz
tar xzvf yaourt.tar.gz
cd yaourt
makepkg -i
yaourt --noconfirm -S postgrey

可选地,可以编辑/ etc / postfix / postgrey_whitelist_recipients文件将您信任的域和电子邮件地址列入白名单。 这是有用的,因为这些地址不会因为灰名单而被延迟。

启动服务器

最后! 我们完成了 现在让我们开始所有的服务器,并希望他们都能工作。

编辑/etc/rc.conf并确保添加列出的守护程序:

DAEMONS=(spamd postgrey dovecot postfix)

这样可以确保所有后台程序在重新启动时都将自动启动。 现在,手动启动它们:

/etc/rc.d/spamd start
/etc/rc.d/postgrey start
/etc/rc.d/dovecot start
/etc/rc.d/postfix start

将mail.example.com添加到您最喜爱的电子邮件客户端,输入您的用户帐户设置,可选择启用SSL,您的个人功能齐全的邮件服务器已准备就绪!

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏