编写一个shell脚本,通过Mutt发送S/MIME签名的电子邮件

编写一个shell脚本,通过Mutt发送S/MIME签名的电子邮件,shell,email,mutt,smime,Shell,Email,Mutt,Smime,我正在制作一个应用程序tiny PHP网站,将我的AirBnB客人信息发送给警察,这是我必须做的事情——这是他们在酒店里做的事情,当他们在办理登机手续时拿走你的护照 该应用程序需要生成一个包含客人数据的文件,然后通过数字签名电子邮件发送给捷克警察局。第一部分已经完成了,但我还得和马特再呆一天 我的目标是发送一封S/mime签名的电子邮件,带有一个带有shell脚本的附件,无需任何用户交互。比如说: mutt -s 'My mail ' abc@gmail.com -a report1.txt &

我正在制作一个应用程序tiny PHP网站,将我的AirBnB客人信息发送给警察,这是我必须做的事情——这是他们在酒店里做的事情,当他们在办理登机手续时拿走你的护照

该应用程序需要生成一个包含客人数据的文件,然后通过数字签名电子邮件发送给捷克警察局。第一部分已经完成了,但我还得和马特再呆一天

我的目标是发送一封S/mime签名的电子邮件,带有一个带有shell脚本的附件,无需任何用户交互。比如说:

mutt -s 'My mail ' abc@gmail.com -a report1.txt < report2.txt
上面的代码发送一封带有附件但没有数字签名的电子邮件,尽管默认情况下在muttrc中已启用

我已经设法通过mutt发送签名电子邮件,但只能通过它的交互式shell,而且每次我都需要手动键入我私钥的密码,上面的代码不要求密码,只需在没有签名的情况下立即发送即可


我尝试用一个空的PEM密码生成密钥,但OpenSSL根本不喜欢它,并立即中止。

我将使用sendmail命令而不是mutt

openssl smime -sign -in report.txt -text -signer cert.pem \
-from you@domain.com -to abc@gmail.com \
-subject "My mail" | sendmail abc@gmail.com
在本例中,cert.pem是从PKCS12文件创建的:

openssl pkcs12 -in yourcert.p12 -out cert.pem -clcerts -nodes
report.txt是要签名和发送的纯文本文件/报告


OpenSSL smime1手册页还有几个很好的例子。

绝望的人会做绝望的事情。我编辑了openssl源代码以生成内容类型:text/plain\r\n而不是内容类型:text/plain\r\n\r\n以便我可以继续:

Content-Disposition: attachment;
        filename="test.txt"

您试图获取无密码密钥的命令是什么?非常感谢!不记得了,但它是错误的,我刚刚正确地生成了它,它在交互式shell中使用空密码短语工作,但当我使用命令发送电子邮件时,它仍然没有签名。有什么想法吗?以下是我的MutRC中的内容:set smime\u certificates=~/.smime/certificates set smime\u keys=~/.smime/keys source~/.mutt/smime.rc set smime\u default\u key=af7d0df7.0 set crypt\u autosign=yes set smime\u is\u default=yes我也试过了,问题是我需要包含一个附件小文本文件,但我找不到使用sendmail执行此操作的方法:/