Linux下配置邮箱客户端MUTT,整合msmtp + procmail + fetchmail

一、背景

        在向 Linux kernel 社区提交patch补丁步骤总结(已验证成功)_kernel补丁-CSDN博客文章中提到如何向kernel社区以及其他类似如qemu、libvirt社区提交patch的详细步骤,但还有一点不足的是通过git send-email这种方法基本是只能发送patch内容到社区maintainer,如果patch有问题需要后期继续和maintainer沟通,则会有很多不便,所以急切需要能在linux下也像windows端一样通过邮件客户端来收发邮件,这个linux下的邮箱软件就是mutt。

        关于mutt其实看过很多文章,但总感觉配置步骤描述的不太清晰,也总不成功,后来工作中也是在同事的帮助下最终得以配成。本文由于本身就是邮箱配置说明,为确保大家不疑惑所以很多地方我直接使用的邮箱明文,还请大家看之忘之,只为学习配置mutt即可。

        mutt可以看成是一个集成软件,具体介绍可查看参考链接,总之mutt可以通过整合其他软件来实现邮箱客户端功能,如发送邮件的msmtp,以及接收邮件的procmail及fetchmail。

        首先,请在windows下查阅自己邮箱的相关配置,一般图形化的软件都可以在设置中查看,比如我的如下图,可以看到关于收发使用的协议、服务器、以及端口号等。

同时要保证,自己的邮箱设置中要开启IMAP和POP转发:

二、配置步骤

1.首先,需要安装一系列rpm包,最好通过上述文章给出的几个rpm网站查找相应rpm包安装,实在找不到就只能自己源码安装,安装的rpm主要为mutt + msmtp + procmail + fetchmail,在安装这些包时会依赖于gnutls,openssl, libsasl等几个包,具体看机器。

2.安装mutt + msmtp + procmail + fetchmail后 一般只会在/etc/xxx下创建默认的配置文件,但我们不同用户在使用是~家目录下的配置文件,这些并不是自动创建的,所以需要我们手动创建配置文件。此处一次性给出四个软件的rc配置文件,具体功能后续再讲。

其中mutt配置文件(#cd ~, #vim .muttrc 手动创建,其余同样):

[root@localhost ~]# cat .muttrc
# General
set use_from=yes
set envelope_from=yes
set move=yes
set charset="utf-8"
set send_charset="utf-8"
auto_view text/html#useful
set include=yes            # 回信时包含原文
set indent_str="> "        # 回信的引文之前插入符号 >
set check_new=yes              # 查是否有新邮件
set mail_check=60              # 每 60 分钟查一次
set timeout=15
set sort=reverse-date-received            # 邮件按日期由近及远排列
set pager_index_lines=10                  # 看信时,在 index 留出多少行显示邮件列表# Account
set realname="JianChunfu"      #你的名字
set from="XXXXX@shingroup.cn"  #你的邮箱# Mail
set mbox_type = Maildir             #Mail box type
set folder = "$HOME/Mail"
set spoolfile = "$HOME/Mail/inbox"  #INBOX
set mbox="$HOME/Mail/seen"          #Seen box
set record="$HOME/Mail/sent"        #Sent box
set postponed="$HOME/Mail/draft"    #Draft box# Programs
set editor="vim"
set sendmail="/usr/bin/msmtp"  #借助msmtp实现发送,所以这个需要和msmtp的位置保持一致
[root@localhost ~]#

配置发送邮件的.msmtprc

[root@localhost ~]# cat .msmtprc
defaults
logfile /var/log/msmtp.logaccount jcf    #添加一个自己的账户,以下配置均属于该账户
auth login
host smtp.exmail.qq.com        #发件服务器
port 465
#protocol smtp
from xxxx@shingroup.cn        #邮箱账户
#user JianChunfu        /*此处按理说可以随意配置姓名,但实测时只有配置成邮箱用户名才发送成功*/
user xxxx@shingroup.cn        #邮箱用户名
password XXXXXXXXXX           #邮箱密码tls on
tls_starttls off
tls_certcheck off
tls_force_sslv3 offaccount default: jcf        #将jcf账户设置成默认发件用户

配置收件的.fetchmailrc和.procmailrc

[root@localhost ~]# cat .fetchmailrc
#set daemon 60
#defaults
poll imap.exmail.qq.com    #收件服务器#protocol IMAPprotocol POP3       #实测发现只有POP协议可以发送#port 993user "XXXXXXX@shingroup.cn"    #发件邮箱password "XXXXXXX"             #发件密码
mimedecode
mda "/usr/bin/procmail -d %T"
[root@localhost ~]#
[root@localhost ~]# cat .procmailrc
MAILDIR=$HOME/Mail        #邮件存放总目录
DEFAULT=$MAILDIR/inbox
VERBOSE=off
LOGFILE=/tmp/procmaillog:0:
inbox/
[root@localhost ~]#

3.配置字段的具体含义,最主要的均已注释,若想每个字段的含义可见参考链接(比如解决中文乱码),由于配置字段非常繁多,所以要想理解每一个字段的含义只能去看手册。

另外,配置中用到的目录如~/Mail/xxx以及存放log的/var/log/msmtp.log等文件均需手动创建,是的,就是这么的不智能。反正我的机器上安装rpm后都没自动配置。

三、测试及问题解决

其实按标准步骤来,应该是先安装msmtp和mutt,之后先测试发送,发送没问题了再安装fetchmail和procmail并配置好,最终测试发送。

1.测试msmtp发送

命令行如下,二者任选(第一个是发送给163邮箱测试,第二个是自己发自己测试):

echo “TEST测试test” | mutt -s “DT_ZABBIX_SERVER_TEST”     xxxx@163.com

echo -e "Subject: Test Mail\r\n\r\nThis is a test mail" | msmtp --debug --from=xxx@shingroup.cn -t xxx@shingroup.cn

其实在这一步我一直报错授权失败,怎么也找不到原因,最后参考别人的文章试着将.msmtprc配置文件中的user 从随意指定的名字 改成 邮箱名,最后发成功了。

在windows查看自己的163邮箱,发现收到了邮件。

2. 测试收件

一开始可以先用mutt查看下自己的linux下的邮箱客户端,直接输入mutt命令即可:

一开始应该是完全空白的。在mutt界面其实也有很多指令。如可以按?来得到命令提示,按m开始撰写并发送,G是手动收信,按r是回信,g是reply all等。

然后直接在windows下使用163邮箱发送一封邮件给linux下配置的邮箱xxxx@shingroup.cn,此时回到linux下的mutt界面,直接按G来手动接收信件。(由于我还没有配置mutt自动收件,所以此时会报错POP host is not defined.,后期补充)

此时我们在linux下先借助fetchmail来收取信件,同样地直接在命令行输入fecthmail即可。

此时查看家目录的Mail目录,发现会多很多文件,那就是一封封邮件了。具体一次性收取多少都可以自行配置。

此时在重新进入mutt界面就发现终于有邮件了,而且可以找到我们在163邮箱发的那一封。

此时就可以通过mutt针对每一封邮件进行回复等操作了,mutt操作邮件的命令可以通过?查看,进入到邮件本身的文本界面后就是vim那一套指令操作。

四、参考链接

Mutt 使用指南

The Mutt E-Mail Client

Linux部署msmtp+mutt发送邮件功能-腾讯云开发者社区-腾讯云

傻瓜式配置mutt-腾讯云开发者社区-腾讯云

配置mutt_51CTO博客_mutt

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

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

相关文章

C# Socket通信从入门到精通(12)——多个同步UDP客户端C#代码实现

前言: 我们在开发Udp客户端程序的时候,有时候在同一个软件上我们要连接多个服务器,这时候我们开发的一个客户端就不够使用了,这时候就需要我们开发出来的软件要支持连接多个服务器,最好是数量没有限制,这样我们就能应对任意数量的服务器连接,由于我们开发的Udp客户端程…

【深度学习】参数优化和训练技巧

寻找合适的学习率(learning rate) 学习率是一个非常非常重要的超参数,这个参数呢,面对不同规模、不同batch-size、不同优化方式、不同数据集,其最合适的值都是不确定的,我们无法光凭经验来准确地确定lr的值,我们唯一可…

【力扣】189. 轮转数组

【力扣】189. 轮转数组 文章目录 【力扣】189. 轮转数组1. 题目介绍2. 解法2.1 方法一:不太正规,但是简单2.2 方法二:使用额外的数组2.3 方法三:环状替换2.4 方法四:数组翻转 3. Danger参考 1. 题目介绍 给定一个整数…

github新建项目

参考链接:Github上建立新项目超详细方法过程 在这里新建一个repositories 接下来就选择相关的信息: 然后create a new就行了 接下来需要创建文件:(同时通过upload上传文件) 每次最多上传100个文件,然后保…

PWM 正玄波形 通过C语言生成

#include <stdio.h> #include <math.h> #include <stdint.h>#define SAMPLE_POINT_NUM (200) /* 需要生成的点的个数 */ #define SINE_MAX (255) /* sin 函数幅值 */ #define PI (3.14…

数据结构之二叉树与堆以及力扣刷题函数扩展

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力 目录 1.前言 2.树 2.1概念 2.2树的相关概念 3.…

orvibo旗下的VS30ZW网关分析之二:版本回退方法

概述 上接第一篇: orvibo旗下的VS30ZW网关分析之一-CSDN博客 此产品VS30ZW支持openwrt的页面,可以版本回退进行刷机。 openwrt固件下载: 固件名称:openwrt-VS30ZW-mt7628.bin 链接地址:https://download.csdn.net/download/leekwen/88579427 版本回退方法: 1、同…

Jupyter Markdown 插入图片

首先截图 注意 这一步是关键的&#xff01;&#xff01; 它需要使用电脑自带的截图&#xff0c;用qq啊vx啊美图秀秀那些都不行哦。 截图之后复制&#xff1a; 然后快捷键粘贴到jupyter里面&#xff0c;它会生成一段代码&#xff08;没有代码就是说截图形式不对&#xff09;&a…

Intellij idea 内存不够用了,怎么处理?

目录 如何判断内存不够用了 下面演示一下如何开启内存指示器&#xff08;Memory Indicator&#xff09; 解决方案 第一种&#xff1a;双击"内存指示器(Mempory Indicator)" 第二种&#xff1a;增大Intellij Idea 最大可使用内存 如何判断内存不够用了 运行项目后…

Vue3-Pinia

Pinia是什么 Pinia是Vue的最新状态管理工具&#xff0c;是Vuex的替代品 比Vuex更大的优势在于&#xff1a; 1.提供更加简单的API&#xff08;去掉了mutation&#xff09; 2.提供符合&#xff0c;组合式风格的API&#xff08;和Vue3新语法统一&#xff09; 3.去掉了modules…

【linux】信号——信号产生

信号产生 1.预备知识2.信号产生2.1通过键盘发送信号2.2系统调用接口向进程发送信号2.3硬件异常产生信号2.4软件条件2.5总结 自我名言&#xff1a;只有努力&#xff0c;才能追逐梦想&#xff0c;只有努力&#xff0c;才不会欺骗自己。 喜欢的点赞&#xff0c;收藏&#xff0c;关…

SpringBoot整合阿里云OSS、天翼云OSS、MinIO对象存储

大家好&#xff01;我是sum墨&#xff0c;一个一线的底层码农&#xff0c;平时喜欢研究和思考一些技术相关的问题并整理成文&#xff0c;限于本人水平&#xff0c;如果文章和代码有表述不当之处&#xff0c;还请不吝赐教。 以下是正文&#xff01; 对象存储是什么&#xff1f…

LeetCode.24两两交换链表中的节点

LeetCode.24两两交换链表中的节点 1.问题描述2.解题思路3.代码 1.问题描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示…

HbuilderX 项目打包文件过大问题优化

文章目录 HbuilderX 项目打包文件过大问题优化主要操作收效甚微&#xff0c;但又有那么点用的方法使用 gulp 压缩&#xff08;最后一步&#xff09;使用与配置 网上找的 gulp 优化压缩配置还未尝试可能有用的方法 尝试过程中看到的一些优质文章 HbuilderX 项目打包文件过大问题…

CSS特效020:涌动的弹簧效果

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…

计算机基础知识60

MySQL分组 # 概念&#xff1a;分组是按照某个指定的条件将单个单个的个体分成一个个整体 # MySQL分组的关键字&#xff1a;group by # 分组一般配合聚合函数使用&#xff1a; sum max min avg count 基本的语法格式: group by 字段名 [having 条件表达式] # 单独使用 group by关…

直播场景视频和特效解决方案

直播已经成为企业与消费者互动的重要方式&#xff0c;如何提供优质的直播内容&#xff0c;提升直播效果&#xff0c;以及实现直播内容的商业化转化&#xff0c;一直是企业面临的重要挑战。为此&#xff0c;美摄科技提供了一套全面的直播场景解决方案&#xff0c;帮助企业解决这…

微服务知识大杂烩

1.什么是微服务? 微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如HTTP)相互协作。每个微服务可以独立开发、部署和扩展,使得应用程序更加灵活、可伸缩和可…

java开发之个微群聊管理

简要描述&#xff1a; 群管理操作 请求URL&#xff1a; http://域名/operateChatRoom 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明w…

【算法刷题】Day8

文章目录 202. 快乐数解法&#xff1a; 11. 盛最多水的容器解法&#xff1a; 202. 快乐数 原题链接 拿到题&#xff0c;我们先看题干 把一个整数替换为每个位置上的数字平方和&#xff0c;有两种情况&#xff1a; 重复这个过程始终不到 1&#xff08;无限死循环&#xff09;结…