Motion调用mutt发邮件时From字段异常导致发送失败求助
Motion调用Mutt发送邮件时From字段异常的解决办法
我之前也碰到过一模一样的问题:手动用Mutt发邮件完全正常,但Motion触发的邮件就因为From字段异常发不出去,核心原因就是运行上下文不一样——你手动操作时是用自己的用户身份,Mutt会读取你家目录下的~/.muttrc;但Motion默认是以系统用户(比如motion或者root)启动的,它根本找不到你的个人配置文件!
下面是我亲测有效的解决步骤:
1. 先确认Motion的运行用户
首先搞清楚Motion到底是以哪个用户身份在跑,执行这条命令:
ps aux | grep motion
输出里第一列就是运行用户(比如motion或者root)。
2. 给Motion的运行用户配置Mutt
如果Motion用的是motion用户,那你需要在它的家目录下创建/复制你的muttrc配置:
# 复制你当前用户的配置到motion用户的家目录 sudo cp ~/.muttrc /home/motion/ # 修改权限,让motion用户能读取 sudo chown motion:motion /home/motion/.muttrc
如果是root用户,就把配置复制到/root/.muttrc。
3. 或者在Motion命令里强制指定配置文件
如果你不想给Motion用户单独配,也可以在Motion的配置文件(比如motion.conf)里,把调用Mutt的命令改成强制加载你的配置:
# 替换成你实际的配置文件路径和收件人 on_event_start mutt -F /home/your_username/.muttrc -s "摄像头触发事件" recipient@example.com < /dev/null
这里的-F参数就是指定Mutt加载的配置文件路径。
4. 验证配置是否生效
切换到Motion的运行用户,手动执行一遍Mutt命令,测试From字段是否正常:
# 如果是motion用户 su - motion -c "mutt -s '测试邮件' recipient@example.com < /dev/null" # 如果是root用户 sudo mutt -s '测试邮件' recipient@example.com < /dev/null
如果这时候邮件能正常发送,且From字段显示的是你配置的Camera,那问题就解决了。
另外还要注意:有些系统里Motion的服务配置可能会限制环境变量,导致HOME路径不对,这时候可以在命令前手动指定HOME:
on_event_start HOME=/home/your_username mutt -s "摄像头触发事件" recipient@example.com < /dev/null
内容的提问来源于stack exchange,提问作者carbonAdr
相关产品推荐
相关产品推荐

