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

2023-11-30 04:52

本文主要是介绍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,接收邮件的fetchmail以及过滤邮件的procmail。

        首先,请在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"        #使用procmail
[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

这篇关于Linux下配置邮箱客户端MUTT,整合msmtp + procmail + fetchmail的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/435701

相关文章

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

Ollama整合open-webui的步骤及访问

《Ollama整合open-webui的步骤及访问》:本文主要介绍如何通过源码方式安装OpenWebUI,并详细说明了安装步骤、环境要求以及第一次使用时的账号注册和模型选择过程,需要的朋友可以参考... 目录安装环境要求步骤访问选择PjrIUE模型开始对话总结 安装官方安装地址:https://docs.

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

Linux编译器--gcc/g++使用方式

《Linux编译器--gcc/g++使用方式》文章主要介绍了C/C++程序的编译过程,包括预编译、编译、汇编和链接四个阶段,并详细解释了每个阶段的作用和具体操作,同时,还介绍了调试和发布版本的概念... 目录一、预编译指令1.1预处理功能1.2指令1.3问题扩展二、编译(生成汇编)三、汇编(生成二进制机器语