安全なサーバー(Gmail)を使用するためにEmacs smtpを構成する方法


9

これは、2010-04-26のhttps://answers.launchpad.net/vm/+question/108267で最初に提起された質問です。

TLSやSTARTTLSを必要とするGmailなどの安全なSMTPサーバーで使用するために、MS WindowsでEmacsメール送信パッケージをどのように構成するかを尋ねます。元の質問は以下にコピーされます。


  • Cygwins gnutlsをインストールしました。

  • .emacsには次のように書かれています:

    (setq send-mail-function 'smtpmail-send-it
      message-send-mail-function 'smtpmail-send-it
      smtpmail-starttls-credentials
      '(("smtp.gmail.com" 587 nil nil))
      smtpmail-auth-credentials
      (expand-file-name "~/.authinfo")
      smtpmail-default-smtp-server "smtp.gmail.com"
      smtpmail-smtp-server "smtp.gmail.com"
      smtpmail-smtp-service 587
      smtpmail-debug-info t)
    
    (require 'starttls)
    (setq starttls-use-gnutls t)
    (setq smtpmail-debug-info t)
    (setq smtpmail-debug-verb t)
    (require 'smtpmail)
    
  • Gmailの認証情報で「〜/ .authinfo」ファイルを作成しました。

  • starttls.elcを削除したので、コンパイルされたバージョンはemacsによって読み込まれません。

  • に交換(signal-process (process-id process) 'SIGALRM)しました

    (call-process "g:\\www\\cygwin\\bin\\kill.exe" nil nil nil
              "-ALRM" (format "%d" (process-id process)))
    

私は次の説明を使用しました:http : //obfuscatedcode.wordpress.com/2007/04/26/configuring-emacs-for-gmails-smtp/

  • メールを送信しようとすると、ミニバッファーに「SMTPエラーの送信に失敗しました」と表示されます。

デバッグバッファでエラーが発生します。

'Process SMTP exited abnormally with code 53'

それは私に何か有用なことを教えてくれません。

回答:


4

以下は、その瞬間の問題につながったアドバイスです。アドバイスはUday Reddyによって発掘され、http://article.gmane.org/gmane.emacs.windows/3250で見つけることができます。2006年7月8日の日付です。

The problem boils down to the fact that the command

(signal-process (process-id process) 'SIGALRM)

does not work with Win32 Emacs, even with Cygwin also installed.  But one can mimic that with:

(call-process "c:\\cygwin\\bin\\kill.exe" nil nil nil
                                     "-ALRM" (format "%d" (process-id 
process)))

gnutsl-cliのドキュメントによると(例:http : //www.gnu.org/software/gnutls/manual/html_node/gnutls_002dcli-Invocation.html#gnutls_002dcli-Invocation ):

starttls option (-s)

これが「接続して、プレーンセッションを確立し、tlsを開始する」です。オプション。TLSセッションは、EOFまたはSIGALRMを受信したときに開始されます。

ニュースグループgnu.emacs.bugで議論されているBug#7789は、MS Windows(別名Woe32)でのこの信号の欠陥を報告しています。

私はこの変更を行うためのアドバイスにも従いました(ファイル "starttls.el"の関数 "starttls-negotiate-gnutls"内)。サーバーsmtp.gmail.com:587を介してテストメールを送信することはできませんでした。

修正は、次のようなファイル「smtpmail.el」の関数「smtpmail-via-smtp」の行を変更することであると判断しました。

(setq process (smtpmail-open-stream process-buffer host port))

(let ((coding-system-for-read 'raw-text-unix))
  (setq process (smtpmail-open-stream process-buffer host port)))

これにより、サーバーの応答が「プロセスバッファ」に挿入されるときにコーディング変換が行われなくなります。特に、サーバーからの220グリーティングの最後にあるCRLF文字ペアが変更されないようにします。

この1つの追加変更により、smtp.gmail.com:587経由でテストメールを送信することに成功しました。

Emacsのバージョン情報は、「3249CTO上の2011-03-10のGUN Emacs 23.3.1(i386-mingw-nt5.1.2600)」です。

私は後で自分の修正がhttp://comments.gmane.org/gmane.emacs.devel/140976での議論によってカバーされていることを発見しました。その議論の一般的なタイトルは、「 `send-mail-function 'のデフォルトの変更」です(これは6/26/11に始まりました)。そこで修正された修正がEmacs 24に組み込まれましたが、Emacs 23.3または23.4にはありません。


Emacsからsmtp.gmail.com経由でメールを送信する方法を調査している間に、別の解決策は、Cygwinから「stunnel」を使用して、VMがそれを使用してPOPサーバーなどに接続するのと同じ方法でした。「smtpmail.el」の「smtpmail-via-smtp」機能を変更し、「stunnel」をこのように使用し、「smtp.gmail.com:465」経由でテストメールを送信できるようにしました。参考として、[ stackoverflow.com/q/9694912/1264870](安全なサーバー(Gmail)を使用してEmacs VMからメールを読む[閉じる])を参照してください。
アランウェマン

11

Emacs 24(現在プレリリース版)はいくつかの改良を加えたようで、物事はもっと単純になりました。まず、smtpmailライブラリはプレーンSSLを実行できるようになりました。STARTTLSを使用する必要はありません。また、Gmail SMTPはポート465でSSLをサポートしています。

だから、ここに必要な設定があります:

(setq smtpmail-stream-type 'ssl)
(setq smtpmail-smtp-server "smtp.gmail.com")
(setq smtpmail-smtp-service 465)

認証資格情報(ログインとパスワード)は、ファイル〜/ .authinfoまたは〜/ .authinfo.gpgに入力する必要があります。(Emacs変数に入れることはできません。)そこで、次の形式の行を含める必要があります。

machine smtp.gmail.com login ..... password ..... port 465

これですべてです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.