Skip to content

Instantly share code, notes, and snippets.

@jhaubrich
Forked from areina/emacs-email-setup.md
Last active August 29, 2015 14:25
Show Gist options
  • Select an option

  • Save jhaubrich/0dfd4c5d3286f6a06eab to your computer and use it in GitHub Desktop.

Select an option

Save jhaubrich/0dfd4c5d3286f6a06eab to your computer and use it in GitHub Desktop.

Revisions

  1. @areina areina created this gist Oct 12, 2012.
    144 changes: 144 additions & 0 deletions emacs-email-setup.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,144 @@
    ## Manage your gmail account in emacs with mu4e

    There're a lot of combinations to manage your email with emacs, but this works for me. I've a backup and I can manage my daily email.

    The stack:

    * emacs
    * offlineimap
    * mu
    * mu4e

    ### offlineimap

    #### install

    $ pacman -S offlineimap

    #### configure

    ~/.offlineimaprc

    ```bash
    [general]
    accounts = Gmail
    maxsyncaccounts = 1
    pythonfile = ~/.offlineimap.py

    [Account Gmail]
    localrepository = Local
    remoterepository = Remote

    [Repository Local]
    type = Maildir
    localfolders = ~/Maildir

    [Repository Remote]
    type = Gmail
    remoteuser = [email protected]
    remotepasseval = get_password_emacs("imap.gmail.com", "[email protected]", "993")
    realdelete = no

    folderfilter = lambda foldername: foldername not in ['[Gmail]/Spam', '[Gmail]/All Mail', '[Gmail]/Starred', '[Gmail]/Important']

    holdconnectionopen = true
    keepalive = 60
    sslcacertfile = /etc/ssl/certs/ca-certificates.crt
    ```

    ~/.offlineimap.py

    ```python
    #!/usr/bin/python
    import re, os

    def get_password_emacs(machine, login, port):
    s = "machine %s login %s port %s password ([^ ]*)\n" % (machine, login, port)
    p = re.compile(s)
    authinfo = os.popen("gpg -q --no-tty -d ~/.authinfo.gpg").read()
    return p.search(authinfo).group(1)
    ```

    ~/.authinfo
    ```bash
    machine imap.gmail.com login [email protected] port 993 password blabla123bla456
    machine smtp.gmail.com login [email protected] port 587 password blabla123bla456
    ```
    With emacs, to encrypt this file:
    * M-x epa-encrypt-file (generate ~/.authinfo.gpg and remove original).

    #### launch

    $ offlineimap (here you can take a beer).

    ### mu

    #### Install

    $ yaourt -S mu

    #### Launch

    $ mu index --maildir=~/Maildir

    ### mu4e

    mu4e is installed by default with mu package. Only that you needs is load it in emacs.

    #### Configure

    in your .emacs, ~/emacs.d/init.el or whatever.

    Note:
    * To send mails with smtpmail.el and use gnutls, we need install the package (pacman -S gnutls)

    ```lisp
    (require 'mu4e)
    ;; default
    (setq mu4e-maildir (expand-file-name "~/Maildir"))
    (setq mu4e-drafts-folder "/[Gmail].Drafts")
    (setq mu4e-sent-folder "/[Gmail].Sent Mail")
    (setq mu4e-trash-folder "/[Gmail].Trash")
    ;; don't save message to Sent Messages, GMail/IMAP will take care of this
    (setq mu4e-sent-messages-behavior 'delete)
    ;; setup some handy shortcuts
    (setq mu4e-maildir-shortcuts
    '(("/INBOX" . ?i)
    ("/[Gmail].Sent Mail" . ?s)
    ("/[Gmail].Trash" . ?t)))
    ;; allow for updating mail using 'U' in the main view:
    (setq mu4e-get-mail-command "offlineimap")
    ;; something about ourselves
    ;; I don't use a signature...
    (setq
    user-mail-address "[email protected]"
    user-full-name "Toni Reina"
    ;; message-signature
    ;; (concat
    ;; "Foo X. Bar\n"
    ;; "http://www.example.com\n")
    )
    ;; sending mail -- replace USERNAME with your gmail username
    ;; also, make sure the gnutls command line utils are installed
    ;; package 'gnutls-bin' in Debian/Ubuntu, 'gnutls' in Archlinux.
    (require 'smtpmail)
    (setq message-send-mail-function 'smtpmail-send-it
    starttls-use-gnutls t
    smtpmail-starttls-credentials
    '(("smtp.gmail.com" 587 nil nil))
    smtpmail-auth-credentials
    (expand-file-name "~/.authinfo.gpg")
    smtpmail-default-smtp-server "smtp.gmail.com"
    smtpmail-smtp-server "smtp.gmail.com"
    smtpmail-smtp-service 587
    smtpmail-debug-info t)
    ```