刚刚在服务器上搭建了邮件系统,记录一下
- 准备工作:
搭建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 邮件服务器”的一个回复