メールクライアントとしてmutt
を使用しようとしていますが、Gmailアカウントでは問題なく機能します。しかし、仕事用の電子メールを使用すると、電子メールが送信されません。エラーは発生せず、送信されません。この問題を引き起こす.muttrc
ファイルの行は次のとおりです。
set smtp_url = "smtp://mail.my_work_email_server.com:587"
smtp_pass
を追加しても動作は変わりません。また、メールサーバーの名前を変更しても(つまり、「架空の」サーバーアドレスを使用しても)、動作は変わりません。
そのマシン上の別のメールクライアントでSMTP経由でメールを正常に送信できますか? SMTPサーバーにTelnet接続して接続を確立できますか? STARTTLSを使用していますか?
Muttでは、プロトコルsmtps
を使用して、最初からTLS/SSLで保護された接続を示します。メールサーバーがそれを期待している場合(最近は多くの場合そうです)、それが問題である可能性があります。
ただし、メールサーバーがSTARTTLS
の使用を想定している場合は、smtp://
で通常のsmtp_url
プロトコルを使用し、必ずset ssl_starttls=yes
を使用してください。
STARTTLSを使用するメールサーバーを示すtelnet
セッションの例を次に示します。
$ telnet smtp.example.com 587
Trying 127.0.0.1...
Connected to smtp.example.com.
Escape character is '^]'.
220 smtp.example.com ESMTP Postfix (Debian/GNU)
EHLO test
250-
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
QUIT
221 2.0.0 Bye
Connection closed by foreign Host.
私は同じことをしました、そしてこれは私のために働いたものです。
set ssl_starttls=yes
set ssl_force_tls=yes
set imap_user = "[email protected]"
set imap_pass = "!HASHEDPASSWORD!"
set folder = imap://mail.example.com/
set spoolfile = imap://mail.example.com/INBOX
# SMTP user auth
# # fill in the right user and pass based on your setup
# # protocols: smtp for TLS (25/587), smtps for SSL (465)
set smtp_url = "smtp://[email protected]:587"
set smtp_pass = "$imap_pass"
# Where to save copies of outgoing mail
set record = '+Sent'
私にとってうまくいかなかったのは、設定ファイルにある順番と、存在しないフォルダへのリンクであるフォルダへの「レコードの設定」の定義でした。
フォルダの作成に関する質問に「いいえ」と答えると、フォルダがハングし、SMTPサーバーへのトラフィックが見られませんでした。
PS:ソース設定ファイルを確認してください。矛盾する設定や間違った順序で指定されている可能性があります。
HTH
以下の~/.muttrc
の設定は、Gmailにメールを送信する場合に機能します。
set from = "[email protected]"
set realname = "user"
set imap_user = "[email protected]"
set imap_pass = "pwd"
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "imaps://imap.gmail.com/INBOX"
set postponed ="+[Gmail]/Drafts"
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates
set smtp_url = "smtps://[email protected]@smtp.gmail.com:465/"
set smtp_pass = "pwd"
set move = no
set imap_keepalive = 900
これは古いスレッドであることに気づきましたが、昨日、2時間かけて上記の構成がうまくいかない理由を突き止め、他の人の時間を節約するための解決策を共有したいと思います。
問題は、GoogleのSMTPサーバーから少なくとも1回は証明書を受け入れる必要があり、入力をリダイレクトせずにmuttを実行する必要があることでした。
ちなみに、証明書を.mutt/certificates
に保存するには、常に(a)を選択する必要があります。一度(o)を選択すると、提供された証明書が使用されますが、.mutt/certificates
には保存されません。
そのため、入力をリダイレクトせずにmuttを実行し(これには標準入力へのパイピングが含まれます)、提供された証明書a lwaysを受け入れます。その後、次にmuttを実行するときに、保存されている証明書を使用しているため、動作するはずです。
私はこれを理解し、さまざまなSSL/TLSとポート構成の間の多くの組み合わせを微調整することに丸一日費やしましたが、成功しませんでした。
set ssl_starttls = no
Muttのデフォルトの動作はSTARTTLSを試すことです。そのため、具体的に指示する必要がありますDO N'T
明らかなsmtp_url
とsmtp_pass
以外の構成は必要ありません。これで完全にメールを送信できます.muttrc
set ssl_starttls = no
set smtp_url = "smtp://[email protected]@mail.example.com:587/"
set smtp_pass = "password"
これは非推奨メールプロバイダーからのSSLの構成で機能しました。それでも、465ポートを使用した推奨構成を使用できません。
これは私が微調整したすべての設定で、他の誰かが試したい場合にメールの送信に影響します:
set ssl_starttls = no # apparently yes is default.
set ssl_force_tls = yes
set smtp_authenticators = "login"
set smtp_url = "smtp[s]://..."
set certificate_file = "~/.mutt/certificates" # some recommend creating the file first: mkdir ~/.mutt && touch ~/.mutt/certificates
set ssl_verify_Host = no
set ssl_verify_dates = no