Debian8 Postfix+Dovecot+Roundcube 邮件服务器

刚刚在服务器上搭建了邮件系统,记录一下

  • 准备工作:

搭建apache2+mysql+php环境,一般来说,如果服务器已经运行有wordpress等网站,就不需要再调整了

如果没有,则需安装

mysql,apache2,php/php5,php-mysql等

在vps商那里设置好Reverse DNS为自己的域名mydomain.com

另外需要提前设置好dns和mx解析:

A记录配置

Host Points To TTL
mydomain.com X.X.X.X auto
mail.mydomain.com X.X.X.X auto

MX记录配置

Priority Host Points To TTL
0 mydomain.com mail.mydomain.com auto


SPF记录配置 

Host TXT Value TTL
mydomain.com v=spf1 mx mx:mydomain.com -all auto
  • 安装必需组件

这里我们用到postfix和dovecot作为服务器端的收发服务,roundcube作为网页邮件客户端

apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules dovecot-imapd dovecot-pop3d dovecot-common

注意:安装postfix时会弹出配置界面,选择Internet Site,然后在mail name中输入你的域名mydomian.com

roundcube下载去官网https://github.com/roundcube/roundcubemail/releases/download/1.3.7/roundcubemail-1.3.7-complete.tar.gz

然后解压到网站访问的目录,如/var/www/html,注意在移动过程中不要忘记.htaccess文件

  • 配置postfix

修改postfix的配置文件/etc/postfix/main.cf,保持其他的不变,在文件下方加入

由于采用了sasl做认证,同时用dovecot作为pop3、imap和smtp的服务,所以需要修改postfix的配置文件以适应需求。在/etc/postfix/main.cf文件中增加以下信息以支持sasl认证和dovecot服务。

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = yourdomain.com
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_security_options = noanonymous
message_size_limit = 10240000
#另外main.cf中的以下两个参数
#myhostname = yourhostname
#mydestination = yourdomain.com, localhost.localdomain, localhost
#分别代表了你的服务器信息,myhostname是你当前主机名,mydestination其中的yourdomain.com则是邮件服务器名。
  • 配置dovecot:

打开/etc/dovecot/dovecot.conf,找到如下代码,并取消注释

listen = *, ::

然后打开/etc/dovecot/conf.d/10-auth.conf,找到并修改以下代码

disable_plaintext_auth = no
auth_mechanisms = plain login

打开/etc/dovecot/conf.d/10-master.conf,找到并取消注释,然后进行修改

# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix
 }
  • 接下来,修改sasl配置文件

debian默认的安装配置中sasl并不会自动启动,需要修改/etc/default/saslauthd文件。将其中的START=no修改为START=yes。

修改

OPTIONS="-c -m /var/run/saslauthd"

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

在启用sasl的情况下postfix运行需要sasldb2文件在postfix的chroot环境中。同时为了保证saslauthd能和postfix通讯,需要作如下的修改。

删除位于/va/run目录下的saslauthd目录,然后创建一个指向/var/spool/postfix/var/run/saslauthd的符号连接。

sudo rm -r /var/run/saslauthd/
sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo ln -s /var/spool/postfix/var/run/saslauthd /var/run
sudo chgrp sasl /var/spool/postfix/var/run/saslauthd
sudo adduser postfix sasl

另外postfix在运行的时候需要将/etc/sasldb2文件拷贝到chroot环境中。

修改/etc/init.d/postfix文件,修改其中的FILES变量,在其中增加etc/sasldb2,这里可能需要一下搜索

完成以上工作后启动服务并检查服务和端口使用情况(25,143)。

systemctl restart dovecot.service 
systemctl status dovecot.service
systemctl restart postfix
systemctl status postfix
netstat -tlpn

将postfix加入到root的组:

usermod -G root postfix

第三步,新增配置用户

adduser username

添加用户后会自动要求输入新用户的密码

  • 赋予邮件文件夹权限

很关键,如果没有权限的话会出现收件箱报错,无法存储邮件等问题

chmod 777 /var/mail

  • 修改postfix SMTP 端口号(2019-07-01 更新)

博主最近发现无法remote登陆邮件服务器,查了很多资料后认为是默认的25端口在很多ISP里是被封的,因此我们需要启动另外的端口(常用587)来正常使用:

打开master.cf

nano /etc/postfix/master.cf

添加或修改

587 inet n – n – – smtpd

保存退出,然后更新并重启服务

postfix reload

service postfix restart

然后检查587端口是否被启用,若有防火墙则须自行设置例外

netstat -plutn | grep 587

如发现master进程使用该端口,则已修改完毕,可以再配置邮件客户端使用了

  • 配置Roundcube(这里默认目录为/opt/roundcube 主要是为了转载别人的方便

1.将所有文件的所有者更改为Apache服务器正在运行的用户

chown -R www-data:www-data /opt/roundcube

2.安装RoundCube数据库

mysql --defaults-file=/etc/mysql/debian.cnf
CREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'secretpassword';
flush privileges;
quit

导入数据库

mysql --defaults-file=/etc/mysql/debian.cnf roundcubemail < /opt/roundcube/SQL/mysql.initial.sql

3.配置RoundCube和Apache

首先配置好apache,在sites-available中添加mail.conf,然后编辑

Alias /roundcube /opt/roundcube
Alias /webmail /opt/roundcube

<Directory /opt/roundcube>
 Options +FollowSymLinks
 # AddDefaultCharset UTF-8
 AddType text/x-component .htc
 
 <IfModule mod_php5.c>
 AddType application/x-httpd-php .php
 php_flag display_errors Off
 php_flag log_errors On
 # php_value error_log logs/errors
 php_value upload_max_filesize 10M
 php_value post_max_size 12M
 php_value memory_limit 64M
 php_flag zlib.output_compression Off
 php_flag magic_quotes_gpc Off
 php_flag magic_quotes_runtime Off
 php_flag zend.ze1_compatibility_mode Off
 php_flag suhosin.session.encrypt Off
 #php_value session.cookie_path /
 php_flag session.auto_start Off
 php_value session.gc_maxlifetime 21600
 php_value session.gc_divisor 500
 php_value session.gc_probability 1
 </IfModule>

 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteRule ^favicon\.ico$ skins/larry/images/favicon.ico
 # security rules:
 # - deny access to files not containing a dot or starting with a dot
 # in all locations except installer directory
 RewriteRule ^(?!installer)(\.?[^\.]+)$ - [F]
 # - deny access to some locations
 RewriteRule ^/?(\.git|\.tx|SQL|bin|config|logs|temp|tests|program\/(include|lib|localization|steps)) - [F]
 # - deny access to some documentation files
 RewriteRule /?(README\.md|composer\.json-dist|composer\.json|package\.xml)$ - [F]
 </IfModule>

 <IfModule mod_deflate.c>
 SetOutputFilter DEFLATE
 </IfModule>

 <IfModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 1 month"
 </IfModule>

 FileETag MTime Size

 <IfModule mod_autoindex.c>
 Options -Indexes
 </ifModule>

 AllowOverride None
 Require all granted
</Directory>

<Directory /opt/roundcube/plugins/enigma/home>
 Options -FollowSymLinks
 AllowOverride None
 Require all denied
</Directory>

<Directory /opt/roundcube/config>
 Options -FollowSymLinks
 AllowOverride None
 Require all denied
</Directory>

<Directory /opt/roundcube/temp>
 Options -FollowSymLinks
 AllowOverride None
 Require all denied
</Directory>

<Directory /opt/roundcube/logs>
 Options -FollowSymLinks
 AllowOverride None
 Require all denied
</Directory>

然后配置roundcube,打开roundcube目录,将示例配置复制一份

cd /opt/roundcube/config
cp -pf config.inc.php.sample config.inc.php

然后编辑

找到以$ config [‘db_dsnw’]开头的数据库配置行, 并将其替换为以下行:

$config['db_dsnw'] = 'mysql://roundcube:secretpassword@localhost/roundcubemail';

必须用您为数据库选择的密码替换“secretpassword”一词。

下一步搜索“smtp_server”行,并在此设置SMTP服务器的主机名。 在我的情况下,邮件服务器是本地服务器,所以我将服务器设置为“localhost”。

$config['smtp_server'] = 'localhost';

这里也可以利用roundcube自带的安装器安装,访问:你的roundcube地址/installer

注意在配置结束后关闭installer工具

启用配置并重新加载apache:

service apache2 reload

第七步,访问网页邮件客户端或配置本地客户端

本文转载编辑自

https://www.cnblogs.com/hellowoody/p/4646993.html

https://www.howtoing.com/roundcube-installation-on-debian-8-jessie

Install a Complete Mail Server with Postfix and Webmail in Debian 9

感谢原作者

“Debian8 Postfix+Dovecot+Roundcube 邮件服务器”的一个回复

发表回复