
背景:RSSフィードを定期的にインポートし、モバイル電子ブックにパッケージ化して自分のKindleに送信するようにサーバーを設定しようとしています。
質問:私の@kindle.comメールアドレスに送信するようにサーバーを設定する場合(下記の説明を参照)https://www.amazon.com/gp/sendtokindle/email) 以下の内容のメールが届きました。
Kindleに送信する電子メールには添付ファイルは含まれていません。
添付ファイルを含む電子メールを送信するには、次のコマンドを使用します。
echo "See attachment" | mail -s subject -aFrom:"$EMAIL_FROM" -A $EMAIL_FILE -r $EMAIL_FROM $EMAIL_TO
私はこのコマンドを@kindle.comの代わりに個人のEメールアドレスに送信してテストしました。メールと添付ファイルが個人用メールボックスに正しく表示されます。
興味深いことに、このようにmuttを使用するとうまくいきます(電子ブックが私のKindleに表示されるように)。
echo "See attachment" | mutt -s subject -a $EMAIL_FILE -- $EMAIL_TO
ホストされたSMTPサーバーに電子メールを転送するためにpostfixを使用しています。サフィックスlog()を確認しましたが、上記の2/var/log/mail.log
つの方法の違いを見ることはできません。サーバーがUbuntu 18.04を実行しています。
質問mutt
:では動作しますが、動作しないのはなぜですかmail
?この問題をどのように解決できますか?
要求された情報
muttのタイトル(あまりにも多くを削除したら教えてください):
Delivered-To: [...]
Received: by 2002:a2e:9c0f:0:0:0:0:0 with SMTP id s15-v6csp1355528lji;
Sat, 10 Nov 2018 10:47:03 -0800 (PST)
[... removed X-* ...]
[... removed ARC-* ...]
Date: Sat, 10 Nov 2018 18:46:44 +0000
From: [...]
To: [...]
Subject: mutt
Message-ID: <20181110184643.GA23337@server>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="5mCyUwZo2JvN/JJP"
Content-Disposition: inline
User-Agent: Mutt/1.9.4 (2018-02-28)
[... removed X-* ...]
--5mCyUwZo2JvN/JJP
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
See attachment
--5mCyUwZo2JvN/JJP
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="20181024T0942.mobi"
Content-Transfer-Encoding: base64
--5mCyUwZo2JvN/JJP--
メールタイトル:
Delivered-To: [...]
Received: by 2002:a2e:9c0f:0:0:0:0:0 with SMTP id s15-v6csp1355767lji;
Sat, 10 Nov 2018 10:47:23 -0800 (PST)
[... removed X-* ...]
[... removed ARC-* ...]
MIME-Version: 1.0
Content-Type: application/octet-stream; name="20181024T0942.mobi"
Content-Transfer-Encoding: base64
Subject: mail
To: [...]
X-Mailer: mail (GNU Mailutils 3.4)
Message-Id: <[email protected]>
Date: Sat, 10 Nov 2018 18:47:07 +0000 (UTC)
From: [...]
[... removed X-* ...]
詳しく調べたところ、mail
「添付ファイルの表示」テキストが欠落していることがわかりました。
バージョン:
jonas@server:~$ mutt -v
Mutt 1.9.4 (2018-02-28)
[...]
jonas@server:~$ mail --version
mail (GNU Mailutils) 3.4
[...]
jonas@server:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
私が正しく使用している-A
サーバーのマニュアルページによると:
-A, --attach=FILE
attach FILE
-a, --append=HEADER: VALUE append given header to the message being sent
答え1
mail
ここで何が起こっているのかは、あなたのプログラムがuuencode形式を使用して添付ファイルを送信すると同時に、mutt
MIME形式でも添付ファイルを送信すると確信しています。
uuencode は廃止予定のメール形式で、ほとんど MIME に置き換えられました。したがって、@kindle.comのハンドラがuuencode形式を認識せず、MIMEのみを認識するという事実は驚くべきことではありません。
mail
さまざまなLinuxディストリビューションが提供する実装が多いので(質問で)コマンドがどのように機能するかを言うのは難しいですmail
(ほとんどの添付ファイルはまったくサポートされていません)。 Linuxディストリビューション、バイナリを含むパッケージ、およびいくつかの参照のmail
詳細については、こちらをman mail
ご覧ください。 (また、マニュアルページには、uuencoded形式の添付ファイルの使用、MIMEのサポートまたはサポートの欠如に関する詳細が含まれる場合があります。詳細については、こちらをご覧ください。)
これを確認する1つの方法は、元のEメール本文を使用しmail
て確認し、mutt
添付ファイルを含むメッセージを自分に送信することです。 uuencodeやMIMEのようなものかどうかを知ることができます。
uuencodeは次のとおりです。
begin 644 myebook.pdf
MIMEは次のとおりです。
Content-Type: application/pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=myebook.pdf
修正する:埋め込みヘッダーで見ると、メールプログラムのように見えます。はいMIMEを使用していますが、既に知っているように、ファイルを添付ファイル(タグ付けContent-Disposition: attachment
)に送信するのではなく、電子メール本文(提供した本文を無視)に送信します。
GNUメールユーティリティMIMEドキュメントこれは期待どおりに機能しなければならないことを意味します。たとえば、次のようになります。
上記のすべての例では、一般的な対話型シェルに移動してメッセージ本文を作成できます。必要でない場合は、/ dev / nullを標準入力にリダイレクトして非対話型の使用を強制できます。たとえば、次のようになります。
$ mail --attach=archive.tar < /dev/null
「対話型シェル」の私の理解は、メッセージテキストを入力するのを待っていますが、特殊文字(〜)で始まるコマンドを受け入れるので、コマンドソルバーになることです。
たぶんmail
本文をパイプで接続せずに試してみて、入力が必要かどうかを確認してから、自分で入力すると電子メール本文を受け入れるかどうかを確認できますか?
答え2
さまざまな名前を持つ多くのプログラムがありますmail
。あなたがそれを持っていて、nail
後で「ガボメール」になったと仮定すると、あなたはそれを使用して戻っ-A
た-a
ように見えます。アカウントは大文字、添付ファイルは小文字を使用します。タイトルを提供する必要があるというMark Plotnikのコメントに同意します。 Kindleは特定のMIMEタイプを無視して異なる動作をmail
することがありますmutt
。