Postfix+Dovecot+Roundcube开源邮件系统搭建系列5:Roundcube安装配置(含Nginx+PHP部署配置)

1. PHP安装配置

参考wordpress 6.5.2版本安装记录 中关于PHP安装方法,此处不再详述。

修改php-fpm的启动用户和组为vmail,这一步是和nginx配置相呼应。配置文件/etc/opt/remi/php83/php-fpm.d/www.conf 下面几个配置:

复制代码
user vmail
group vmail
listen.acl_users = vmail
#access.log = /var/opt/remi/php83/log/php-fpm/$pool.access.log #可选配置
listen = /var/opt/remi/php83/run/php-fpm/www.sock # 这个配置需要记录一下,下面nginx的配置需要用到

配置启动php-fpm:

复制代码
systemctl enable php83-php-fpm
systemctl start php83-php-fpm

2. Nginx安装配置

2.1 安装nginx

复制代码
yum install nginx

2.2 /etc/nginx/nginx.conf 配置文件

复制代码
user  vmail; #以vmail身份运行,下面会涉及相关的配置
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    # 日志文件位置
    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

2.3 /etc/nginx/conf.d/roundcube.conf 配置文件

在/etc/nginx/conf.d目录创建roundcube.conf配置文件,配置相关参数(下面参数仅供参考,里面很多是跟安全有关的配置):

复制代码
    send_timeout            60;
    client_body_timeout     60;
    client_header_timeout   60;

    client_max_body_size            50m;
    client_body_buffer_size         1m;
    client_header_buffer_size       1k;
    large_client_header_buffers     4 8k;
    proxy_read_timeout              180;
    server_tokens                   off; # default on
    server_names_hash_bucket_size   512;
    map_hash_max_size               13107200;

    gzip on;
    gzip_disable     "msie6";

    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 2;
    gzip_http_version 1.1;
    gzip_min_length 256;
    gzip_types text/plain text/css text/xml text/javascript text/x-json application/json application/x-javascript application/javascript application/xml
 application/xml+rss;
    ssl_session_timeout  5m;
    ssl_session_cache    shared:SSL:10m;
    ssl_session_tickets  off;
    ssl_protocols        TLSv1.2 TLSv1.3;
    ssl_ciphers          "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-S
HA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES256-SHA:HIGH:!MEDIUM:!LOW:!aNUL
L:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:@STRENGTH";
    ssl_prefer_server_ciphers   on;
    proxy_ssl_verify     off;

server {
        listen 80;
        server_name www.mailabc.cn;
        rewrite ^(.*)$ https://$host$1 permanent;
}

server {
        listen 443 ssl http2;

        # server_name  @web_name
        server_name www.mailabc.cn;
        # 这里配SSL证书
        ssl_certificate     /var/sslcert/www.mailabc.cn.pem;
        ssl_certificate_key /var/sslcert/www.mailabc.cn.key;
        ssl_dhparam         /etc/nginx/dhparam.pem;
        ssl_stapling        on;
        ssl_stapling_verify on;
        # 配置roundcube的数据目录,需要提前创建
        root /var/www/roundcube;
        index index.php;
        # 配置fastcgi相关内容
        location ~ \.php$ {
            fastcgi_pass unix:/var/opt/remi/php83/run/php-fpm/www.sock; #该配置对应上述php-fpm的设置
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
}

2.4 创建 /var/www/roundcube 目录

复制代码
mkdir /var/www/roundcube
chown vmail:vmail /var/www/roundcube

2.5 启动服务

复制代码
systemctl start nginx
systemctl enable nginx

3. Roundcube配置

3.1 下载程序

下载链接单击此处。

3.2 部署Roundcube

3.2.1 解压程序:
复制代码
tar -zxvf roundcubemail-1.6.7-complete.tar.gz -C /var/www/
cd /var/www/ && mv roundcubemail-1.6.7/* roundcube/
# 设置目录权限为vmail:vmail
chown vmail:vmail -R /var/www/roundcube
3.2.2 初始化数据库:
sql 复制代码
/* 创建数据库,名称可以自定义 */
CREATE DATABASE roundcube;

/* 初始化数据库 */
USE roundcube;
source /var/www/roundcube/SQL/mysql.initial.sql 

/* 授权用户roundcube对roundcube数据库操作权限,可以自行定义账户名和密码 */
grant all on roundcube.* to roundcube@localhost identified by 'admin123';
FLUSH PRIVILEGES;
3.2.3 config.inc.php 配置文件:

创建配置文件:

sql 复制代码
cp /var/www/roundcube/config/config.inc.php.sample /var/www/roundcube/config/config.inc.php

修改配置文件内容:

sql 复制代码
# 配置数据库连接方式,见上面数据库初始化内容
$config['db_dsnw'] = 'mysql://roundcube:admin123@localhost/roundcube';
# smtp采用tls方式连接587端口
$config['smtp_host'] = 'tls://localhost:587';
# 启用installer进行图形界面初始化测试,测试完毕需要删除。我不打算用该配置
#$config['enable_installer'] = true; 
# 忽略检查ssl证书有效性,方便测试用。生产环境不建议启用
$config['smtp_conn_options'] = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
],
];
3.2.4 安全起见,删除installer目录:
sql 复制代码
rm -rf /var/www/roundcube/installer/

4. 测试

4.1 登录测试

通过域名或者ip访问roundcube界面,显示如下:

Roundcube登录界面

登录之后,界面如下:

Roundcube主界面

4.2 信件收发测试

写信:

Roundcube写信界面

读信:

Roundcube读信界面

至此,本系列文章结束。但是,实际上我们的工作刚开始,还有大量功能等着我们去探索,例如如何修改附件大小、别名邮箱如何处理、自动转发如何配置等等。后续我们将针对相关主题更新文档进行讨论。

相关推荐
parade岁月6 小时前
开源也扛不住 AI 了?ESLint 宣布立即终止外部贡献者奖励
开源
AllData公司负责人7 小时前
AI大模型数据开发底座系列说明书,AllData集成Chat2DB开源项目建设AI 数据库分析底座,涵盖AI 洞察/对话SQL/智能视图!
数据库·人工智能·sql·开源·ai 洞察·对话sql
李纲明9 小时前
WordPress 打开页面直接报 500 而不是白屏:先核伪静态与文件权限,再查服务器错误日志
nginx·wordpress·文件权限·伪静态·错误日志·devdiy·500错误
冬奇Lab10 小时前
一天一个开源项目(第260篇):Plannotator —— 给 AI 编码 Agent 配一块「可批注的审阅台」,计划和代码改动都能在浏览器里逐条批示
人工智能·开源·claude
火云代理11 小时前
更换网络后为什么会退出登录?分清 IP、Cookie 与会话的关系
服务器·网络·网络协议·tcp/ip·php·ip
火云代理15 小时前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
炫酷的大高个19 小时前
98% 连跑 20 次只剩 67%,我算了大模型重试账
人工智能·架构·开源
分布式存储与RustFS20 小时前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
笑容掩饰我的失落21 小时前
区块链从小白到精通(七):Solidity 语法精讲——数据类型、函数、修饰器与事件
算法·区块链·php·智能合约·哈希算法
IT古董1 天前
AI 资讯日报 | 2026年10月25日:Kimi K3.1 Pro开源逼近前沿,OpenAI改离线训练,Claude合并Cowork,神经网络黑箱获新解,具身智能竞技场落幕
人工智能·神经网络·开源