使用frp透传软件搭建本地运行的私有邮箱服务器

起因:随着我公司在线应用软件的增多,比如wordpress、 next cloud、SuitCRM 、iFair等,许多场合都要求填写邮箱地址,绑定邮箱。因为不想将过多的数据存储于第三方空间,因此考虑在公司局域网内搭建一个私有的电子邮箱服务器,再通过公司域名,实现功能的透传。

零、用到的服务器环境介绍

0.1 外网固定ip的vps

Debian12 最小化安装,frps 0.53.2, nginx , 假设绑定的域名 www.abctest.com   mail.abctest.com

该vps上运行了 公司的官方网站,采用的是html5 + CSS 编写的静态单页网站,结合私有ssl证书,通过 https://www.abctest.com 访问。

0.2 局域网搭建的iRedMail邮箱服务器

Debian12 最小化安装,frpc 0.53.2

一、邮件服务器的搭建

1.1  假设域名: abctest.com   邮箱服务器: mail.abctest.com

这里服务器环境为Debian12最小化安装;邮箱服务器采用可交互式安装的 iRedMail,安装过程可以参考官网;安装的过程中,选择使用了PostgreSQL数据库,密码假设为: Abctest888;要求设置邮箱域,输入  abctest.com 即可;还要求设邮箱管理员postmaster@abctest.com 的密码,这里假设为 Abctest888 

1.2  安装完成后如何进入邮箱:

  这里假设邮件服务器在本地局域网的ip为 192.168.1.250

管理员模式登录:
* - iRedMail Admin: https://192.168.1.250/iredadmin
管理员账号:postmaster@abctest.com  密码:Abctest888普通用户模式登录  
* - Roundcube webmail: https://mail.abctest.com    ## 默认的webGUI
* - SOGo groupware: https://mail.abctest.com/SOGo/ ## SOGo登录GUI

1.3  安装完成后可以查看服务器的总体配置

1.3.1  基本配置如下
cat iRedMail-1.6.8/configexport STORAGE_BASE_DIR='/var/vmail'
export WEB_SERVER='NGINX'
export BACKEND_ORIG='PGSQL'
export BACKEND='PGSQL'
export VMAIL_DB_BIND_PASSWD='s9SmJbOlKpPzm5T8j5qDrxobekuDbpvL'
export VMAIL_DB_ADMIN_PASSWD='IhSdIIPzbzSSXUK0BfMM5rKmtri0qPsk'
export MLMMJADMIN_API_AUTH_TOKEN='qBQyzRCwHEOvRAYlhja5tAaXhhmBXQh4'
export NETDATA_DB_PASSWD='yx0nFXuiWJs7D26xeVCwZw4RAdjEtnCA'
export PGSQL_ROOT_PASSWD='Abctest888'
export FIRST_DOMAIN='abctest.com'
export DOMAIN_ADMIN_PASSWD_PLAIN='Abctest888'
export USE_IREDADMIN='YES'
export USE_ROUNDCUBE='YES'
export USE_SOGO='YES'
export USE_NETDATA='YES'
export USE_FAIL2BAN='YES'
export AMAVISD_DB_PASSWD='tPpwOzq33oVMISgktgS3f55IeRTWjKKz'
export IREDADMIN_DB_PASSWD='EVIH8ZTsCDv3jbowtmSMEd94LLDAkVtW'
export RCM_DB_PASSWD='y9lMIKGYsjtwE07MTIsZU1EzTbGIDZyT'
export SOGO_DB_PASSWD='21NHY4yp1Yjw1qkeF4mZ2EBzBlzKW5JM'
export SOGO_SIEVE_MASTER_PASSWD='QfnTNbkQmfSn965EnGiyNzysGO3shnou'
export IREDAPD_DB_PASSWD='7QcVfbX0QTSi0Lprxisefp1YIOtdmYxn'
export FAIL2BAN_DB_PASSWD='9D4j3twgaQTS06ioSluhPeXHPnELI2kI'
#EOF
1.3.2 安装完成后的邮箱服务器信息如下
cat iRedMail-1.6.8/iRedMail.tipsAdmin of domain abctest.com:* Account: postmaster@abctest.com* Password: Abctest888You can login to iRedAdmin with this account, login name is full email address.First mail user:* Username: postmaster@abctest.com* Password: Abctest888* SMTP/IMAP auth type: login* Connection security: STARTTLS or SSL/TLSYou can login to webmail with this account, login name is full email address.* Enabled services:  rsyslog postfix postgresql nginx php8.2-fpm dovecot clamav-daemon amavis clamav-freshclam sogo memcached fail2ban cron nftablesSSL cert keys (size: 4096):- /etc/ssl/certs/iRedMail.crt- /etc/ssl/private/iRedMail.keyMail Storage:- Mailboxes: /var/vmail/vmail1- Mailbox indexes:- Global sieve filters: /var/vmail/sieve- Backup scripts and backup copies: /var/vmail/backupPostgreSQL:* Admin user: postgres, Password: Abctest888* Bind account (read-only):- Name: vmail, Password: s9SmJbOlKpPzm5T8j5qDrxobekuDbpvL* Vmail admin account (read-write):- Name: vmailadmin, Password: IhSdIIPsacSSXUK0BfMM5rKrtmi0qPsk* Database stored in: /var/lib/postgresql/15/main* RC script: /etc/init.d/postgresql* Config files:* /etc/postgresql/15/main/postgresql.conf* /etc/postgresql/15/main/pg_hba.conf* Log file: /var/log/postgresql/* See also:- /root/iRedMail-1.6.8/runtime/pgsql_init.pgsql- /var/lib/postgresql/.pgpassSQL commands used to initialize database and import mail accounts:- /root/iRedMail-1.6.8/runtime/*.sqlPostfix:* Configuration files:- /etc/postfix- /etc/postfix/aliases- /etc/postfix/main.cf- /etc/postfix/master.cf* SQL/LDAP lookup config files:- /etc/postfix/pgsqlDovecot:* Configuration files:- /etc/dovecot/dovecot.conf- /etc/dovecot/dovecot-ldap.conf (For OpenLDAP backend)- /etc/dovecot/dovecot-mysql.conf (For MySQL backend)- /etc/dovecot/dovecot-pgsql.conf (For PostgreSQL backend)- /etc/dovecot/dovecot-used-quota.conf (For real-time quota usage)- /etc/dovecot/dovecot-share-folder.conf (For IMAP sharing folder)* Syslog config file:- /etc/rsyslog.d/1-iredmail-dovecot.conf (present if rsyslog >= 8.x)* RC script: /etc/init.d/dovecot* Log files:- /var/log/dovecot/dovecot.log- /var/log/dovecot/sieve.log- /var/log/dovecot/lmtp.log- /var/log/dovecot/lda.log (present if rsyslog >= 8.x)- /var/log/dovecot/imap.log (present if rsyslog >= 8.x)- /var/log/dovecot/pop3.log (present if rsyslog >= 8.x)- /var/log/dovecot/sieve.log (present if rsyslog >= 8.x)* See also:- /var/vmail/sieve/dovecot.sieve- Logrotate config file: /etc/logrotate.d/dovecotNginx:* Configuration files:- /etc/nginx/nginx.conf- /etc/nginx/sites-available/00-default.conf- /etc/nginx/sites-available/00-default-ssl.conf* Directories:- /etc/nginx- /var/www/html* See also:- /var/www/html/index.htmlphp-fpm:* Configuration files: /etc/php/8.2/fpm/pool.d/www.confPHP:* PHP config file for Nginx:* Disabled functions: posix_uname,eval,pcntl_wexitstatus,posix_getpwuid,xmlrpc_entity_decode,pcntl_wifstopped,pcntl_wifexited,pcntl_wifsignaled,phpAds_XmlRpc,pcntl_strerror,ftp_exec,pcntl_wtermsig,mysql_pconnect,proc_nice,pcntl_sigtimedwait,posix_kill,pcntl_sigprocmask,fput,phpinfo,system,phpAds_remoteInfo,ftp_login,inject_code,posix_mkfifo,highlight_file,escapeshellcmd,show_source,pcntl_wifcontinued,fp,pcntl_alarm,pcntl_wait,ini_alter,posix_setpgid,parse_ini_file,ftp_raw,pcntl_waitpid,pcntl_getpriority,ftp_connect,pcntl_signal_dispatch,pcntl_wstopsig,ini_restore,ftp_put,passthru,proc_terminate,posix_setsid,pcntl_signal,pcntl_setpriority,phpAds_xmlrpcEncode,pcntl_exec,ftp_nb_fput,ftp_get,phpAds_xmlrpcDecode,pcntl_sigwaitinfo,shell_exec,pcntl_get_last_error,ftp_rawlist,pcntl_fork,posix_setuidClamAV:* Configuration files:- /etc/clamav/clamd.conf- /etc/clamav/freshclam.conf- /etc/logrotate.d/clamav* RC scripts:+ /etc/init.d/clamav-daemon+ /etc/init.d/clamav-freshclamAmavisd-new:* Configuration files:- /etc/amavis/conf.d/50-user- /etc/postfix/master.cf- /etc/postfix/main.cf* RC script:- /etc/init.d/amavis* SQL Database:- Database name: amavisd- Database user: amavisd- Database password: tPpwOzq33oVMISgktgS3f55IeRTWjKKzDNS record for DKIM support:; key#1 2048 bits, s=dkim, d=abctest.com, /var/lib/dkim/abctest.com.pem
dkim._domainkey.abctest.com.        3600 TXT ("v=DKIM1; p=""MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs9BKQ0Q821NN1IC8FbzC""3Uq1XGF/10xypU6LUZpNudmvqApCAQDXcyvMIiYwFhejtMdeLbk+qbywuiHGRs3Y""OlJ/fGTTgIUL8qx3IfxEjtvvsU90fi94721+1kCKy7SyFHXgkyjlRTUXkUnF3HplIV6""TWlXBp9GvpSXW5ZNfBG3zFM2NZTt3A8psKbHs6FQyZ6Z7fMi+cKEktRrg2e4P2kx""wfJ25W+FGTVI//H1AsE3ZfjV+RQj1rjB2d5Vpls1SZCA3Q6nqc5lDufPxnmviC9F""VvjN3K9XcF9beSCV3oTgQUz6PRNuli7/5TMkTUP/DqigodyQqubARdMFPDNn3+pX""JQIDAQAB")
SpamAssassin:* Configuration files and rules:- /etc/mail/spamassassin- /etc/mail/spamassassin/local.cfiRedAPD - Postfix Policy Server:* Version: 5.3.3* Listen address: 127.0.0.1, port: 7777* SQL database account:- Database name: iredapd- Username: iredapd- Password: 7QcVfbX0QTSi9Lprxisekl1YIOtdmYvz* Configuration file:- /opt/iredapd/settings.py* Related files:- /opt/iRedAPD-5.3.3- /opt/iredapd (symbol link to /opt/iRedAPD-5.3.3iRedAdmin - official web-based admin panel:* Version: 2.5* Root directory: /opt/www/iRedAdmin-2.5* Config file: /opt/www/iRedAdmin-2.5/settings.py* Web access:- URL: https://mail.abctest.com/iredadmin/- Username: postmaster@abctest.com- Password: Abctest888* SQL database:- Database name: iredadmin- Username: iredadmin- Password: EVIH8ZTsCDa9jbowtmSMEd63LLDAkVtWRoundcube webmail: /opt/www/roundcubemail-1.6.5* Config file: /opt/www/roundcubemail-1.6.5/config* Web access:- URL: http://mail.abctest.com/mail/ (will be redirected to https:// site)- URL: https://mail.abctest.com/mail/ (secure connection)- Username: postmaster@abctest.com- Password: Abctest888* SQL database account:- Database name: roundcubemail- Username: roundcube- Password: y5lMIKGYsjtwE07MTIsZU2EzTbGIDZyT* Cron job:- Command: "crontab -l -u root"SOGo Groupware:* Web access: httpS://mail.abctest.com/SOGo/* Main config file: /etc/sogo/sogo.conf* Nginx template file: /etc/nginx/templates/sogo.tmpl* Database:- Database name: sogo- Database user: sogo- Database password: 75NHY4yp1Yjw1qkeF3mZ2EBzBlzKW0JM* SOGo sieve account (Warning: it's a Dovecot Master User):- file: /etc/sogo/sieve.cred- username: sogo_sieve_master@not-exist.com- password: QfnTNbkQmfSn371EnGiyNzysGO8shnou* See also:- cron job of system user: sogonetdata (monitor):- Config files:- All config files: /opt/netdata/etc/netdata- Main config file: /opt/netdata/etc/netdata/netdata.conf- Modified modular config files:- /opt/netdata/etc/netdata/go.d- /opt/netdata/etc/netdata/python.d- HTTP auth file (if you need a new account to access netdata, pleaseupdate this file with command like 'htpasswd' or edit manually):- /etc/nginx/netdata.users- Log directory: /opt/netdata/var/log/netdata- SQL:- Username: netdata- Password: yx4nFXuiWJs9D38xeVCwZw1RAdjEtnCA- NOTE: No database required by netdata.

1.4 管理员登录界面和普通用户登录界面

二 、frp 软件的设置 

可参考我的两篇文章

frp透传软件最新toml格式的配置文件的使用_frpc toml设置-CSDN博客

利用frps搭建本地自签名https服务的透传_frp配置ssl-CSDN博客

假设我们的域名服务器就是frps服务器,也就是  www.abctest.com

2.1 frps.toml的配置

cat /etc/frp/frps.tomlbindPort = 7777
vhostHTTPSPort = 443
vhostHTTPPort = 8080

2.2 frpc.toml的配置

主要是对 邮箱服务所需的特定端口进行绑定,类型都是tcp

 cat /etc/frp/frpc.tomlserverAddr = "www.abctest.com"
serverPort = 7777[[proxies]]
name = "ssh-250"
type = "tcp"
localIP = "127.0.0.1"
localPort = 33250
remotePort = 33250[[proxies]]
name = "web-250"
type = "https"
localPort = 443
customDomains = ["mail.abctest.com"][[proxies]]
name = "smtp-250"
type = "tcp"
localPort = 25
remotePort = 25[[proxies]]
name = "submission-250"
type = "tcp"
localPort = 587
remotePort =587[[proxies]]
name = "pop3-250"
type = "tcp"
localPort = 110
remotePort =110[[proxies]]
name = "pop3s-250"
type = "tcp"
localPort = 995
remotePort =995[[proxies]]
name = "imap-250"
type = "tcp"
localPort = 143
remotePort = 143[[proxies]]
name = "imaps-250"
type = "tcp"
localPort = 993
remotePort = 993

三、 服务端nginx对域名 mail.abctest.com 的自动转发

因为外网vps运行的是 frps以及一个官网网页,所以已经占据了80端口和443端口,要想实现对 https://mail.abctest.com 的转发,需要新增一个 nginx 虚拟机的配置。配置文件内容如下

 cat /etc/nginx/conf.d/mail.confserver {listen      80 ;listen      [::]:80 ;server_name mail.abctest.com;rewrite ^/(.*)$ https://mail.abctest.com:443/$1 permanent;#               location / {#  proxy_pass http://127.0.0.1:443;# }}

局域网内 iRedMail服务器的 nginx设置

将  /etc/nginx/sites-enabled/{00-default-ssl.conf,00-default.conf} 这两个配置文件中 的  server_name 配置上 mail.abctest.com  即可!!

重启vps和本地iRedMail 服务器上的 nginx

连接测试一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识计算机网络 | 计算机网络的发展 | 协议初识

1.计算机网络的发展 “矛盾是普遍存在的,矛盾是事物联系的实质内容和事物发展的根本动力!” 计算机在诞生之初,在军事上用来计算导弹的弹道轨迹!在发展的过程中(商业的推动,国家政策推动)&…

软件工程测试2

1.【单选】“数据流的分解一般达到2层数据流就截止”的说法是否正确 A. 正确 B. 错误 答案:B 2.【单选】 在类图中,哪种关系表达总体与局部的关系 A. 泛化 B. 实现 C. 聚合 D. 依赖 答案:C 3.【多选】从UML时序图中我们能够得到(…

ChatGLM论文解读

GLM GLM: General Language Model Pretraining with Autoregressive Blank Infilling 论文地址 1. 背景介绍 1)主流预训练框架 模型介绍结构特点训练目标autoregressive自回归模型,代表GPT,本质上是一个从左到右的语言模型,常用于无条件生成任务(unconditional generat…

openssl3.2/test/certs - 044 - 8192-bit leaf key

文章目录 openssl3.2/test/certs - 044 - 8192-bit leaf key概述笔记END openssl3.2/test/certs - 044 - 8192-bit leaf key 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 /*! * \file D:\my_dev\my_local_git_prj\study\openSSL\test_certs\044\my_openssl_linux_…

composer安装hyperf后,nginx配置hyperf

背景 引入hyperf项目用作微服务,使用composer 安装hyperf后,对hyperf进行nginx配置。 配置步骤 因为hyperf监听的是端口,不像其他laravel、lumen直接指向文件即可。所有要监听端口号。 1 配置nginx server {listen 80;//http&#xff1a…

如何使用宝塔面板配置Nginx反向代理WebSocket(wss)

本章教程,主要介绍一下在宝塔面板中如何配置websocket wss的具体过程。 目录 一、添加站点 二、申请证书 三、配置代理 1、增加配置内容 2、代理配置内容 三、注意事项 一、添加站点 二、申请证书 三、配置代理 1、增加配置内容 map $http_upgrade $connection_…

HBase学习五:运维排障之备份与恢复

1 snapshot简介 1.1 发展史 distcp:关机全备份。HBase的所有文件都存储在HDFS上,因此只要使用Hadoop提供的文件复制工具distcp将HBASE目录复制到同一HDFS或者其他HDFS的另一个目录中,就可以完成对源HBase集群的备份工作 copyTable:在线跨集群备份。copyTable工具通过MapRed…

uniapp移动端——企业微信H5调用jssdk实现扫一扫,通过weixin-java-cp获取ticket签名,配置config

背景: 使用企业微信开发扫一扫功能 可信域名验证 (1)企业微信的可信域名需要和企业微信的备案主体一致。 域名备案主体可通过站长工具查看域名备案主体。https://icp.chinaz.com/ 企业微信备案主体可以咨询管理员 (2)通过nginx配置域名归…

【算法Hot100系列】不同路径

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

LIMS源码,实验室信息系统源码,后端框架:asp.net

LIMS(laboratory information management system)即实验室信息管理系统是实验室管理科学发展的成果,是实验室管理科学与现代信息技术结合的产物,是利用计算机网络技术、数据存储技术、快速数据处理技术等,对实验室进行全方位管理的计算机软件…

代码随想录二刷——数组day2

文章目录 前言数组知识点 一、 977. 有序数组的平方二、209. 长度最小的子数组三、59. 螺旋矩阵 II总结 前言 一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油! 二刷决定精刷了,于是参加了卡子哥…

【Linux】糟糕,是心动的感觉——与Linux的初次相遇

初识Linux 导言一、计算机的发展1.1 历史背景1.2 计算机的发明 二、操作系统2.1 什么是操作系统?2.2 操作系统的诞生2.3 操作系统的发展2.3.1 批处理系统的发展2.3.2 分时系统2.3.3 实时系统2.3.4 通用操作系统 2.4 UNIX操作系统2.4.1 UNIX的诞生2.4.2 UNIX的发展 2…

开源 C/C++(DuckX)操作docx文旦

目录 1.详情 2.项目示例 1.详情 创建、读取和写入 Microsoft Office Word docx 文件,可以不使用Microsoft Office组件。目前看操作docx文件绕不开Microsoft Office组件,虽然本项目可以读取docx文档,但是里面排版都消失了,除此之…

Mysql的基本操作详解

当涉及到MySQL数据库的基本操作时,我们通常会涉及到创建数据库、创建表格、插入数据、查询数据等操作。下面是一个简要的MySQL基本操作的博客: --- MySQL基本操作详解 MySQL是一个广泛使用的关系型数据库管理系统,为许多应用程序提供了可靠…

BP神经网络需要像深度学习一次次的迭代训练吗?

BP神经网络 答案:是的,BP神经网络需要像深度学习一次次的迭代训练。总结(BP神经网络和深度学习在本质上有以下区别) 答案:是的,BP神经网络需要像深度学习一次次的迭代训练。 BP神经网络(误差反…

2024.1.24 GNSS 学习笔记

1.伪距观测值公式 2.载波相位观测值公式 3.单点定位技术(Single Point Positionin, SPP) 仅使用伪距观测值&#xff0c;不使用其他的辅助信息获得ECEF框架下绝对定位技术。 使用广播星历的轨钟进行定位&#xff0c;考虑到轨钟的米级精度&#xff0c;所以对于<1米的误差&…

Linux:gcc的相关知识

目录 gcc的翻译&#xff08;编译&#xff09;过程&#xff1a; 预处理&#xff1a; 条件编译&#xff1a; 编译&#xff1a; 汇编&链接&#xff1a; 什么是链接&#xff1f; 安装静态库&#xff1a; 静态库的使用&#xff1a; 动态静态的对比&#xff1a; 优缺对比…

IDEA插件(MyBatis Log Free)

引言 在Java开发中&#xff0c;MyBatis 是一款广泛使用的持久层框架&#xff0c;它简化了SQL映射并提供了强大的数据访问能力。为了更好地调试和优化MyBatis应用中的SQL语句执行&#xff0c;一款名为 MyBatis Log Free 的 IntelliJ IDEA 插件应运而生。这款插件旨在帮助开发者…

Oracle、MySQL数据库常规命令语法-简易记录(非常规持续更新)

前言:呈现的是非常基础必备命令以及常规关联语法,因涉及到不同数据库其表达都会有所区别,此篇纯属做个仓库记录更非常规持续更新,专业人士可忽略,且看且珍惜… MySQL: 关系型数据库、重点开源、支持大型规模、标准SQL数据语言、多平台多架构、高可用集群、可定制开发等等、…

Spring Cloud+SkyWalking全链路监控部署及使用分享

先了解 SkyWalking 极简入门 | Apache SkyWalking 版本&#xff1a;apache-skywalking-apm-9.7.0.tar.gz OAP服务和UI服务 apache-skywalking-java-agent-9.1.0.tgz JAVA-AGENT服务 环境&#xff1a;linux 项目&#xff1a;spring cloud 记录下碰到的问题&#xff1a; 1、s…