当前位置: 首页 > 知识库问答 >
问题:

debian - mail可调用smtp转发邮件,但是本地邮件无法发送?

吕俊才
2023-08-31

安装

sudo apt install msmtp  msmtp-mda

设置

vim .msmtprc
account default
host smtp.qq.com
from x1@qq.com
auth on
tls on
tls_certcheck off
user x1@qq.com
password xxxx
logfile ~/.msmtp.log

mail命令调用smtp.qq.发送邮件:

echo "Testing msmtp " | mail -s "hi root" -r x1@qq.com -- aa@yahoo.com

成功了!但是发现无法发送本地邮件了

echo "cron task work done " | mail -s "hi root" root

user用户发送邮件给root.

报错:
mail: cannot send message: Process exited with a non-zero status

查看日志:

Aug 24 20:47:31 host=smtp.qq.com tls=on auth=on user=x1@qq.com from=debian@debian.debian recipients=root@debian.debian smtpstatus=501 smtpmsg='501 Mail from address must be same as authorization user.' errormsg='envelope from address debian@debian.debian not accepted by the server' exitcode=EX_DATAERR

这样也不行

echo "cron task work done " | mail -s "hi root" -r debian@debian.debian  root

日志

Aug 29 06:56:39 host=smtp.qq.com tls=on auth=on user=x1@qq.com from=debian@debian.debian recipients=root@debian.debian smtpstatus=501 smtpmsg='501 Mail from address must be same as authorization user.' errormsg='envelope from address debian@debian.debian not accepted by the server' exitcode=EX_DATAERR

如何解决?

共有1个答案

阳兴朝
2023-08-31

根据你提供的信息,msmtp 的配置中遇到了一个常见的问题,即邮件发送时出现 "Mail from address must be same as authorization user" 的错误。这是因为 SMTP 服务器要求发送邮件的 "From" 地址必须与授权用户相同,以防止滥用。

要解决这个问题,请按照以下步骤进行操作:

  1. 编辑 .msmtprc 配置文件:

    vim ~/.msmtprc

    确保以下几点:

    • from 选项的值必须与 user 选项的值相同。
    • from 选项的值必须使用授权用户的完整邮箱地址,例如 x1@qq.com

    你的 .msmtprc 文件应该像这样:

    account defaulthost smtp.qq.comfrom x1@qq.comauth ontls ontls_certcheck offuser x1@qq.compassword xxxxlogfile ~/.msmtp.log
  2. 更新 mail 命令中的 -r 选项:

    echo "cron task work done " | mail -s "hi root" -a "From: x1@qq.com" root

    通过添加 -a "From: x1@qq.com",将发送邮件的 "From" 地址设置为授权用户的邮箱地址。

这样应该就可以成功发送邮件了。如果问题仍然存在,请确保你使用的是有效的授权用户、正确的邮箱地址和密码,并且与你的 SMTP 服务器设置兼容。

 类似资料:
  • SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。 首先,我们来构造一个最简单的纯文本邮件: from email.mime.text import MIMEText msg = MIMEText('hello, send

  • SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。 首先,我们来构造一个最简单的纯文本邮件: from email.mime.text import MIMEText msg = MIMEText('hello, send

  • 主要内容:实例,使用 Ruby 发送 HTML 邮件,实例,发送带附件的邮件,实例SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 Ruby提供了 Net::SMTP 来发送邮件,并提供了两个方法 new 和 start: new 方法有两个参数: server name 默认为 localhost port number 默认为 25 start 方法有以下参数:

  • SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 Python创建 SMTP 对象语法如下: import smtplib smtpObj = smtplib.SMTP( [host

  • 我在我的camunda环境中有这个类(我在camunda modeller中使用这个类作为服务任务):

  • 问题内容: 我正在使用以下方法使用SMTP从Python发送邮件。是使用的正确方法还是我缺少的陷阱? 问题答案: 我使用的脚本非常相似。我将其发布在此处,作为如何使用email。*模块生成MIME消息的示例。因此可以轻松修改此脚本以附加图片等。 我依靠ISP添加日期时间标头。 我的ISP要求我使用安全的smtp连接发送邮件,我依靠smtplib模块(可从http://www1.cs.columbi