2017-05-30 69 views
0

我正在製作一個應用程序(微型PHP網站),將我的AirBnB客人信息發送給警察(我必須這麼做 - 這是他們在做什麼一家酒店,當他們在辦理登機手續時拿着護照)。編寫一個shell腳本通過Mutt發送S/MIME簽名電子郵件

該應用需要生成一個包含訪客數據的文件,然後通過數字簽名的電子郵件將其發送給捷克警察局。第一部分已經完成,但是我還有一天又被Mutt困住了。

我的目標是在沒有任何用戶交互的情況下發送帶有附件的帶有附件的S/MIME簽名電子郵件。因此,像這樣:

mutt -s 'My mail ' [email protected] -a report1.txt < report2.txt 

上面的代碼發送電子郵件帶有附件但沒有數字簽名,雖然在默認情況下啓用的muttrc。

我已經設法發送帶有mutt的簽名電子郵件,但只能通過它的交互式shell加上我每次都需要手動輸入我的私鑰的密碼,上面的代碼並不要求輸入密碼一個簽名馬上。

我試着用空PEM傳遞生成密鑰,但之後OpenSSL根本不喜歡它,立即中止。

+0

什麼是你試圖讓無密碼鑰匙的命令? – Deathgrip

+0

非常感謝!不記得,但它是錯誤的,我剛剛生成它正確,它使用空密碼(在交互式shell中),但它仍然不會簽名時,我發送電子郵件與命令。有任何想法嗎? –

+0

下面是我在我的muttrc: '設置smime_certificates =〜/ .smime /證書 集smime_keys =〜/ .smime /鍵 源〜/ .mutt的/ smime.rc 集smime_default_key = af7d0df7.0 集crypt_autosign =是 設置smime_is_default =是' –

回答

0

我會使用sendmail命令而不是mutt。

openssl smime -sign -in report.txt -text -signer cert.pem \ 
-from [email protected] -to [email protected] \ 
-subject "My mail" | sendmail [email protected] 

在這個例子中,cert.pem從PKCS12文件中創建:

openssl pkcs12 -in yourcert.p12 -out cert.pem -clcerts -nodes 

REPORT.TXT要簽署併發送純文本文件/報告。

OpenSSL smime(1)手冊頁有幾個很好的例子。

+0

我也試過這個,事情是我需要包括一個附件(小文本文件),我找不到用sendmail做到這一點的方法:/ –

0

絕望的人做絕望的事情。我編輯了OpenSSL的源代碼來生成Content-Type: text/plain;\r\n而不是Content-Type: text/plain\r\n\r\n這樣我就可以與跟進:

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