在linux中使用自己的邮箱对外发邮件

需要使用 mutt + msmtp 工具组合(兼容性好,支持主流邮箱)

步骤 1:安装必要工具

需要 mutt(邮件客户端)和 msmtp(SMTP 发送代理,处理认证)

# Debian/Ubuntu
sudo apt update && sudo apt install mutt msmtp

# CentOS/RHEL(需先启用 EPEL 源)
sudo yum install epel-release
sudo yum install mutt msmtp

步骤 2:配置 msmtp(SMTP 认证)

创建 / 编辑 msmtp 配置文件(~/.msmtprc),替换为你的邮箱信息

vim ~/.msmtprc

添加以下内容(根据你的邮箱类型选择配置)
下面给了几个例子

示例 1:QQ 邮箱

account default
# QQ 邮箱 SMTP 服务器
host smtp.qq.com 
# 端口(465 为 SSL 加密)      
port 465
# 你的 QQ 邮箱地址(发件人)         
from your_qq@qq.com
# 启用认证    
auth on
# 你的 QQ 邮箱账号(同发件人)       
user your_qq@qq.com
# 注意:不是QQ密码,是邮箱的「授权码」
password your_auth_code
# 启用 TLS 加密
tls on
# QQ 邮箱用 SSL,关闭 STARTTLS
tls_starttls off
# 日志文件(可选,用于排查错误)
logfile ~/.msmtp.log

示例 2:163 邮箱

account default
# 163 邮箱 SMTP 服务器
host smtp.163.com
port 465
# 你的 163 邮箱
from your_163@163.com
auth on
user your_163@163.com
# 163 邮箱的授权码
password your_auth_code
tls on
tls_starttls off
logfile ~/.msmtp.log

关键说明

  • 「授权码」需在邮箱设置中开启 SMTP 服务后获取(例如 QQ 邮箱在「设置 - 账户 - POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务」中开启并生成)。
  • 保存后设置文件权限(必须 600,否则 msmtp 会报错)
    chmod 600 ~/.msmtprc
    

步骤 3:配置 mutt(关联 msmtp)

创建 / 编辑 mutt 配置文件(~/.muttrc

vim ~/.muttrc
# msmtp 路径(用 which msmtp 确认)
set sendmail="/usr/bin/msmtp"
# 你的邮箱(同发件人)
set from="your_email@example.com"
# 显示的发件人名称(可选)
set realname="Your Name"

发送邮件

执行以下命令,用你的邮箱发送邮件

# 纯文本邮件(正文从管道输入)
echo "这是测试邮件,从自己发给自己" | mutt -s "测试:自己发自己" dest_email@example.com

# 带附件的邮件
echo "附带一个测试文件" | mutt -s "测试:带附件" -a /path/to/your/file -- dest_email@example.com
  • 替换 dest_email@example.com 为收件人邮箱。
  • -s 后面是邮件主题,-a 后面是附件路径(可选)。

排查错误

如果发送失败,查看 msmtp 日志

cat ~/.msmtp.log

常见问题:

  • 授权码错误:重新生成并替换配置文件中的 password。
  • SMTP 端口 / 服务器错误:确认邮箱的 SMTP 服务器地址和端口(如 QQ 是 smtp.qq.com:465,163 是 smtp.163.com:465)。
  • 加密方式错误:QQ/163 用 tls_starttls off,Gmail 用 tls_starttls on。
posted @ 2025-11-03 10:55  厚礼蝎  阅读(6)  评论(0)    收藏  举报