ubuntu18.04配置邮件服务: postfix+dovecot+roundcube

Postfix+Dovecot+Roundcube基于LEMP堆栈实现邮箱系统 基于Postfix+Dovecot+Roundcube+LEMP堆栈搭建邮箱系统! 阅读详情

记录,以供下次换服务器时参考。

前提:

  • 解封25端口(腾讯云)
  • 买了域名,绑定解析好
  • apache2配置好
  • 用certbot 生成好ssl证书

关于解析域名,添加MX和 A类,
域名MX记录解析设置方法

参考链接:
create mail server,postfix dovecot
几篇综合参考,下面那篇写的比较详细。除了中途遇到mysql相关的问题,以及后面的dovecot问题,过程基本按教程来就行。

踩的坑:
配置完postfix+dovecot+roundcube,登录roundcube连接至 IMAP 服务器失败

mysql安装问题:
装php-mysql就解决了。

 history |grep sql
 1906  2021-01-26 22:54:59 sudo apt install postfix postfix-mysql dovecot-core dovecot-pop3d dovecot-imapd dovecot-lmtpd dovecot-mysql
 2024  2021-01-27 14:39:02 service mysqld status
 2025  2021-01-27 14:39:16 sudo service mysqld status
 2026  2021-01-27 14:42:50 sudo apt-get install --reinstall mysql-server
 2028  2021-01-27 14:47:17 sudo apt-get install --reinstall php-mysql
 2030  2021-01-27 14:48:06 sudo apt-get install --reinstall mysql-server
 2080  2021-01-27 16:41:14 cat /usr/share/roundcube/SQL/mysql/

主要参考教程:
直接点原文看,csdn排版一如既往cd
How to Install Postfix, Dovecot, and Roundcube on Ubuntu 20.04
Last Updated: Fri, Jul 10, 2020 Email Ubuntu
Introduction

Postfix is a Mail Transfer Agent(MTA) for routing and delivering electronic mail(email). Dovecot is a secure IMAP and POP3 Mail Delivery Agent(MDA). These two open-source applications work well with Roundcube, an email client primarily famous for its clever use of Ajax technology. In this guide, you’ll install Postfix, Dovecot, and Roundcube on Ubuntu 20.04. This guide uses the domain example.com and the server name mail.example.com.
Prerequisites

Before you begin, make sure you have the following:

An Ubuntu 20.04 server configured with a Fully Qualified Domain Name (FQDN).
A non-root user with sudo privileges.
A LAMP stack with an SSL certificate installed. This guide uses a free Let's Encrypt certificate.
Verify the server's outbound port status.
  1. Install &

Ubuntu 16.04 手动部署 Roundcube Webmail 完整指南 Webmail 是基于 Web 浏览器访问邮件服务的技术方案,其核心依赖于 Apache 或 Nginx 等 Web 服务器、PHP 运行环境及 IMAP/SMTP 协议与后端邮件系统(如 Dovecot/Postfix)通信。Roundcube 作为成熟稳定的开源 Webmail 客户端,以 PHP 编写,强调桌面级交互体验与生产就绪性。在老旧但广泛使用的 Ubuntu 16.04 系统上部署时,需特别关注 PHP 7.0 兼容性、php-mbstring 等关键扩展缺失导致的中文乱码问题,以及 MySQ 阅读详情

相关推荐

Ubuntu 16.04下部署Roundcube Webmail完整指南

Webmail是基于IMAP/SMTP协议实现的网页端邮件客户端,其核心原理是作为用户与邮件服务器之间的代理交互层,不存储邮件实体而专注界面呈现与会话管理。技术价值在于赋予用户对通信入口的完全控制权,规避SaaS邮箱的可用性风险、数据锁定与隐私黑箱。典型应用场景包括中小企业自建邮件门户、技术团队统一接入多IMAP后端(如Dovecot、腾讯企业邮)、自由职业者构建隐私优先的收发环境。本文聚焦于在长期支持且生态稳定的Ubuntu 16.04系统上,完成Roundcube 1.3.x版本的生产级部署,涵盖Apa

weixin_30399155的博客 745

Ubuntu 18.04 下 Postfix 邮件中继配置实战指南

邮件传输代理(MTA)是 Linux 系统实现自动化告警、脚本通知和应用发信的核心基础设施;其核心原理在于基于 SMTP 协议完成邮件路由、中继与 TLS 加密投递。Postfix 因配置简洁、权限隔离严格、兼容性稳定,成为生产环境首选 MTA;相比 Sendmail 或 Exim,它以键值对配置、进程沙箱化和内建校验工具(如 postconf -n、postfix check)显著降低运维复杂度与安全风险。技术价值体现在轻量可靠、TLS/STARTTLS 原生支持、SASL 认证集成及低资源占用,广泛适用

weixin_30627341的博客 362

Ubuntu 18.04 下 Postfix 搭建仅发送 SMTP 服务器实战

SMTP 是应用层邮件传输的核心协议,其本质是将本地生成的邮件可靠投递给目标邮箱;Postfix 作为成熟稳定的 MTA(邮件传输代理),在仅发送(send-only)模式下剥离收信、Web 管理、反垃圾等冗余功能,专注实现轻量、安全、可维护的本地发信通道。该模式通过配置 relayhost 将邮件交由高信誉中继服务(如腾讯企业邮箱、Gmail 或 SendGrid)完成最终投递,天然规避 IP 信誉低、25端口封锁、DKIM/SPF 配置复杂等自建邮件系统常见痛点。适用于自动化告警、CI/CD 通知、Io

cojm55771的博客 463

Ubuntu 12.04 x64 部署 iRedMail 邮件服务器实战指南

邮件服务器是企业通信基础设施的核心组件,其本质是一套基于 SMTP、DNS、TLS 和身份验证协议(SPF/DKIM/DMARC)协同工作的分布式服务系统。理解其工作原理需掌握 MTA(如 Postfix)、MDA(如 Dovecot)、反垃圾引擎(Amavisd/ClamAV)及 Webmail(Roundcube)的集成逻辑与依赖边界。在老旧操作系统如 Ubuntu 12.04 上部署,更凸显 DNS 配置、TLS 证书链兼容性、内核架构限制(x64 内存寻址优势)等底层技术价值。该场景广泛适用于政务/

weixin_33720078的博客 414

docker一键部署笔记

默认 登录用户名: postgres如果遇到 FATAL: password authentication failed for user "XXX"有可能防火墙的问题,禁止外部访问解决方法: 在 data 的 pg_hba.conf 中的 ipv4 添加以下一行。

Angindem博客 458

WebMail邮件服务器搭建:postfix+dovecot+roundcube (原理加全操作-详细)

WebMail邮件服务器搭建:postfix+dovecot+roundcube (原理加全操作-详细)

postfix+dovecot及+postadmin+Roundcube配置源码

postfix、dovecot系统配置文件,postfixadmin及Roundcube 管理界面php源码信息,安装postfix及dovecot后替换配置文件,修改域名可直接使用。 操作系统: Centos7.2 dovecot: 2.2.36 (1f10bfa63) postfix: postfix-2.10.1-7.el7.x86_64

Claude Skills:不是更聪明,而是更“像专家”的 Agent 养成方法

Claude Skills 不是在告诉 Agent“你能做什么”, 而是在约束它“你应该如何思考、如何判断、如何给结论”。

测试者家园 1293

保姆级避坑指南:在Ubuntu 22.04上从零编译Autoware.universe(含ROS2 Humble和CUDA配置)

本文提供了一份详细的Autoware.universe编译指南,涵盖Ubuntu 22.04系统优化、ROS2 Humble安装避坑、CUDA配置及Demo运行技巧。通过分步操作和实战经验,帮助开发者高效完成环境搭建,避免常见错误,提升自动驾驶开发效率。

weixin_30642561的博客 347

Mplus实战:三变量随机截距交叉滞后模型(RI-CLPM)语法详解与扩展

本文详细解析了Mplus中三变量随机截距交叉滞后模型(RI-CLPM)的构建原理与语法实现。通过将变量分解为稳定的个体间差异与动态的个体内波动,模型能更纯净地揭示多变量间的纵向交互影响。文章以工作压力、睡眠质量与工作满意度为例,提供了完整的语法模板、关键参数设置(如NOCOV命令、残差相关)及结果解读指南,帮助研究者避开常见误区,稳健分析复杂动态关系。

wdx0123456的博客 926

Mac微信聊天记录备份终极指南:用软链接轻松迁移到外接硬盘(附重签名教程)

本文详细介绍了如何通过软链接技术将Mac微信聊天记录备份迁移到外接硬盘,解决内置存储空间不足的问题。教程包括备份文件定位、软链接创建及微信重签名步骤,帮助用户高效管理微信数据,释放Mac存储空间。

uuu88的博客 1162

宇树G1开发实践--PPT汇报(基础版)

本文介绍了一套基于宇树G1人形机器人的PPT自动演示系统,可实现"一键启动、自动演讲"功能。系统通过多线程同步技术,将音频播放与机器人动作完美结合,支持12种预设社交互动动作。硬件依赖宇树G1机器人、外接音响和网络连接,软件采用Python SDK和ALSA音频工具。核心功能包括音频文件自动排序、外接音响播放控制、机器人动作执行及音画同步。使用时需配置网络接口和音频设备号,运行后自动按顺序播放音频并执行随机动作。系统特别强调了安全注意事项,并提供了常见问题解决方案,适用于展会、汇报等需要

m0_47999117的博客 509

【OpenCV】图像的像素直方图 图像特征点 cv::FAST cv::ORB ORB_SLAM2::ORB

文章目录图像直方图代码实现cv::FAST和cv::ORB 检测图像特征点cv::FAST和cv::ORB 检测图像特征点代码实现ORB_SLAM2::ORB和自己实现ORB图像特征点检测效果对比ORB_SLAM2::ORB和自己实现ORB图像特征点检测效果对比代码实现 图像直方图代码实现 图像是由不同数值(颜色)的像素构成的,像素值在图像中的分布情况是图像的重要属性,可以用直方图修改图像的外观,标识图像的内容,检测图像中特定的物体或纹理。 单通道灰度图像中每个像素都有一个 0(黑色)-255(白色)的整

小秋 AI SLAM 入门实战教程 2509

HDMI接口及其在编程中的应用

在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文将介绍HDMI接口的基本原理以及如何在编程中使用HDMI接口。在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文介绍了HDMI接口的基本原理,并提供了使用Python编程语言和相关库实现HDMI接口应用的示例代码。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。

CodeByte的博客 801

为什么devc++编译项目会失败?提示gcc无法正常启动...

根据你的描述,编译能正常进行时,只打开源文件并没有问题,问题主要出现在创建项目后编译失败,这通常与 Makefile 配置、环境变量、编译器路径设置等因素有关。你可以检查 Makefile 配置,验证 DevC++ 的编译器环境设置,或者尝试清理并重新配置项目。如果问题仍然存在,可以尝试重装 DevC++ 或重新配置工具链。希望如上措施及解决方案能够帮到有需要的你。

**My Coding Family** 1375

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 配置完postfix+dovecot+roundcube,登录roundcube连接至 IMAP 服务器失败
下一篇: http->https由于证书引起的问题,已阻止载入混合活动内容,ERR_SSL_PROTOCOL_ERROR等
nedwons
博客等级 码龄9年 311粉丝 572原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值