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,您的个人功能齐全的邮件服务器已准备就绪!