{"id":630,"date":"2014-10-26T19:04:35","date_gmt":"2014-10-26T17:04:35","guid":{"rendered":"http:\/\/www.blackhats.es\/wordpress\/?p=630"},"modified":"2022-08-20T18:25:36","modified_gmt":"2022-08-20T16:25:36","slug":"offlineimap-mu-mu4e-en-emacs-alternativas-modernas-a-gnus-y-rmail","status":"publish","type":"post","link":"https:\/\/www.blackhats.es\/wordpress\/?p=630","title":{"rendered":"Offlineimap + Mu + Mu4e en emacs: alternativas modernas a gnus y rmail"},"content":{"rendered":"<p>mu4e es un moderno cliente de correo basado en el indexador\/buscador de emails mu. La principal ventaja de esta herramienta es la super eficiencia a la hora de leer los correos. Entre algunas de sus funcionalidades destaca:<\/p>\n<ul>\n<li>Completamente basado en busquedas: no hay directorios, solo peticiones.<\/li>\n<li>Documentacion completa con ejemplos de configuracion.<\/li>\n<li>La interfaz de usuario esta optimizada para velocidad con keybindings cortos para acciones.<\/li>\n<li>Es asincrono, por lo que las acciones no bloquean emacs.<\/li>\n<li>Soporte criptografico<\/li>\n<li>Se emplea el texto enriquecido a la hora de escribir emails mediante org-mode<\/li>\n<li>Permite el auto-completado basado en los mensajes previos.<\/li>\n<li>Es extensible.<\/li>\n<\/ul>\n<p>Pasos para la instalacion:<\/p>\n<p>Primero debemos descargar el codigo o bien de la web <a href=\"https:\/\/code.google.com\/p\/mu0\/downloads\/list\" target=\"_blank\" rel=\"noopener\">https:\/\/code.google.com\/p\/mu0\/downloads\/list<\/a> o bien directamente del repositorio git:<\/p>\n<pre style=\"padding-left: 30px;\">$<strong> git clone https:\/\/github.com\/djcb\/mu.git<\/strong>\r\n$ <strong>cd mu<\/strong><\/pre>\n<p>Instalamos otros paquetes necesarios para la compilacion de mu4e o su uso:<\/p>\n<pre class=\"src src-Language\" style=\"padding-left: 30px;\">$ <strong>sudo apt-get install libgmime-2.6-dev libxapian-dev gnutls-bin guile-2.0-dev html2text xdg-utils<\/strong><\/pre>\n<p>Instalamos offlineimap y sqlite:<\/p>\n<pre style=\"padding-left: 30px;\">$ <strong>sudo apt-get install offlineimap sqlite<\/strong><\/pre>\n<p>Configuramos, compilamos e instalamos mu (tambien se puede instalar por ejemplo desde los repositorios de debian con apt):<\/p>\n<pre style=\"padding-left: 30px;\">$ <strong>autoreconf -i<\/strong>\r\n$ <strong>.\/configure<\/strong>\r\n$ <strong>make<\/strong>\r\n$ <strong>sudo make install<\/strong><\/pre>\n<p>Configuramos offlineimap para que pueda acceder a emails de gmail, creamos un fichero llamado <strong>.offlineimaprc<\/strong> en nuestro directorio de usuario:<\/p>\n<pre style=\"padding-left: 30px;\">[general]\r\n# List of accounts to be synced, separated by a comma.\r\naccounts = Gmail\r\nmaxsyncaccounts = 3\r\n\r\n[Account Gmail]\r\n# Identifier for the local repository; e.g. the maildir to be synced via IMAP.\r\nlocalrepository = Gmail-local\r\n# Identifier for the remote repository; i.e. the actual IMAP, usually non-local.\r\nremoterepository = Gmail-remote\r\n# Status cache. Default is plain, which eventually becomes huge and slow.\r\nstatus_backend = sqlite\r\n\r\n[Repository Gmail-local]\r\ntype = Maildir\r\nlocalfolders = ~\/Maildir\r\n\r\n[Repository Gmail-remote]\r\ntype = IMAP\r\nremotehost = imap.gmail.com\r\nremoteuser = <strong><span style=\"color: #0000ff;\">&lt;TU_EMAIL@gmail.com&gt;<\/span><\/strong>\r\nremotepass = <strong><span style=\"color: #0000ff;\">&lt;TU_PASSWORD&gt;<\/span><\/strong>\r\nssl = yes\r\nmaxconnections = 1\r\nrealdelete = no\r\n\r\nfolderfilter = lambda foldername: foldername in ['INBOX', 'Dev']\r\n# Necessary as of OfflineIMAP 6.5.4\r\nsslcacertfile = \/etc\/ssl\/certs\/ca-certificates.crt\r\n<\/pre>\n<p>Checkeamos que podamos acceder a nuestro email mediante mu:<\/p>\n<pre style=\"padding-left: 30px;\">$ <strong>mu index<\/strong><\/pre>\n<p style=\"padding-left: 30px;\">o bien podemos probar lanzando<\/p>\n<pre style=\"padding-left: 30px;\">$ <strong>offlineimap<\/strong><\/pre>\n<p>El output que debemos ver es algo asi.<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/Selection_004.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-632\" src=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/Selection_004.png\" alt=\"Selection_004\" width=\"658\" height=\"865\" srcset=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/Selection_004.png 658w, https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/Selection_004-228x300.png 228w\" sizes=\"(max-width: 658px) 100vw, 658px\" \/><\/a><\/p>\n<p>Ahora anadimos las siguientes lineas de configuracion a nuestro <strong>.emacs<\/strong>:<\/p>\n<pre style=\"padding-left: 30px;\">;;----------------------------------------------------------\r\n;; ---- BEGIN Email client ----\r\n;;----------------------------------------------------------\r\n(add-to-list 'load-path \"\/usr\/local\/share\/emacs\/site-lisp\/mu4e\")\r\n\r\n(require 'mu4e)\r\n\r\n;; Maildir\r\n(setq mu4e-maildir \"~\/Maildir\")\r\n(setq mu4e-drafts-folder \"\/[Gmail].Drafts\")\r\n(setq mu4e-sent-folder   \"\/[Gmail].Sent Mail\")\r\n(setq mu4e-trash-folder  \"\/[Gmail].Trash\")\r\n\r\n;; Don't save message to Sent Messages, Gmail\/IMAP takes care of this\r\n(setq mu4e-sent-messages-behavior 'delete)\r\n\r\n;; Setup some handy shortcuts\r\n;; you can quickly switch to your Inbox -- press ``ji''\r\n;; then, when you want archive some messages, move them to\r\n;; the 'All Mail' folder by pressing ``ma''.\r\n(setq mu4e-maildir-shortcuts\r\n      '( (\"\/INBOX\"               . ?i)\r\n         (\"\/[Gmail].Sent Mail\"   . ?s)\r\n         (\"\/[Gmail].Trash\"       . ?t)\r\n         (\"\/[Gmail].All Mail\"    . ?a)))\r\n\r\n;; Allow for updating mail using 'U' in the main view:\r\n(setq mu4e-get-mail-command \"offlineimap\")\r\n\r\n;; Something about ourselves\r\n(setq\r\n user-mail-address \"<strong><span style=\"color: #0000ff;\">your_email@gmail.com<\/span><\/strong>\"\r\n user-full-name  \"<strong><span style=\"color: #0000ff;\">nickname (Your Name Here)<\/span><\/strong>\"\r\n message-signature\r\n (concat\r\n  \"<strong><span style=\"color: #0000ff;\">nickname (Your name here)<\/span><\/strong>\\n\"\r\n  \"Email: <strong><span style=\"color: #0000ff;\">your_email@gmail.com<\/span><\/strong>\\n\"\r\n  \"Blog: <strong><span style=\"color: #0000ff;\">your_blog.org<\/span><\/strong>\\n\"\r\n  \"Douban: <strong><span style=\"color: #0000ff;\">your_website.com<\/span><\/strong>\"\r\n  \"\\n\"))\r\n(require 'smtpmail)\r\n\r\n;; For emacs-24 you can use:\r\n(setq message-send-mail-function 'smtpmail-send-it\r\n    smtpmail-stream-type 'starttls\r\n    smtpmail-default-smtp-server \"smtp.gmail.com\"\r\n    smtpmail-smtp-server \"smtp.gmail.com\"\r\n    smtpmail-smtp-service 587)\r\n\r\n;; Don't keep message buffers around\r\n(setq message-kill-buffer-on-exit t)\r\n\r\n;; Attaching files with M-x dired and then C-c &lt;RET&gt; C-a\r\n(require 'gnus-dired)\r\n;; make the `gnus-dired-mail-buffers' function also work on\r\n;; message-mode derived modes, such as mu4e-compose-mode\r\n(defun gnus-dired-mail-buffers ()\r\n  \"Return a list of active message buffers.\"\r\n  (let (buffers)\r\n    (save-current-buffer\r\n      (dolist (buffer (buffer-list t))\r\n\t(set-buffer buffer)\r\n\t(when (and (derived-mode-p 'message-mode)\r\n\t\t(null message-sent-message-via))\r\n\t  (push (buffer-name buffer) buffers))))\r\n    (nreverse buffers)))\r\n\r\n(setq gnus-dired-mail-mode 'mu4e-user-agent)\r\n(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)\r\n\r\n;; Viewing inline images\r\n(setq mu4e-view-show-images t)\r\n;; Use imagemagick, if available\r\n(when (fboundp 'imagemagick-register-types)\r\n   (imagemagick-register-types))\r\n<\/pre>\n<p>Checkeamos que podemos acceder a nuestro email mediante mu4e en emacs:<\/p>\n<p><a href=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/Selection_003.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-635\" src=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/Selection_003.png\" alt=\"Selection_003\" width=\"876\" height=\"864\" srcset=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/Selection_003.png 876w, https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/Selection_003-300x295.png 300w\" sizes=\"(max-width: 876px) 100vw, 876px\" \/><\/a><\/p>\n<p style=\"text-align: left;\">Al pulsar la <strong>\u00abU\u00bb<\/strong> vemos que se esta actualizando el email. Podemos tambien cargar un speedbar con <strong>M-x speedbar<\/strong><\/p>\n<p><a href=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-634\" src=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/1.png\" alt=\"1\" width=\"875\" height=\"864\" srcset=\"https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/1.png 875w, https:\/\/www.blackhats.es\/wordpress\/wp-content\/uploads\/2014\/10\/1-300x296.png 300w\" sizes=\"(max-width: 875px) 100vw, 875px\" \/><\/a><\/p>\n<p style=\"text-align: left;\">Lectura de emails mediante<strong> \u00abj i\u00bb<\/strong> para el jump inbox. Para escribir emails simplemente pulsamos <strong>\u00abC\u00bb<\/strong> de compose y para enviarlos <strong>\u00abC-c C-c\u00bb<\/strong><\/p>\n<p>Referencias:<\/p>\n<p><a href=\"http:\/\/wenshanren.org\/?p=111\" target=\"_blank\" rel=\"noopener\">http:\/\/wenshanren.org\/?p=111<\/a><br \/>\n<a href=\"http:\/\/www.emacswiki.org\/emacs\/mu4e\" target=\"_blank\" rel=\"noopener\">http:\/\/www.emacswiki.org\/<wbr \/>emacs\/mu4e<\/a><br \/>\n<a href=\"http:\/\/www.djcbsoftware.nl\/code\/mu\/cheatsheet.html\" target=\"_blank\" rel=\"noopener\">http:\/\/www.djcbsoftware.nl\/<wbr \/>code\/mu\/cheatsheet.html<\/a><br \/>\n<a href=\"https:\/\/github.com\/djcb\/mu\/blob\/master\/README\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/djcb\/mu\/<wbr \/>blob\/master\/README<\/a><br \/>\n<a href=\"http:\/\/www.djcbsoftware.nl\/code\/mu\/mu4e.html\" target=\"_blank\" rel=\"noopener\">http:\/\/www.djcbsoftware.nl\/<wbr \/>code\/mu\/mu4e.html<\/a><br \/>\n<a href=\"http:\/\/www.djcbsoftware.nl\/code\/mu\/mu4e.html\" target=\"_blank\" rel=\"noopener\">http:\/\/www.djcbsoftware.nl\/<wbr \/>code\/mu\/mu4e.html<\/a><br \/>\n<a href=\"http:\/\/emacs-fu.blogspot.fi\/2012\/08\/introducing-mu4e-for-email.html\" target=\"_blank\" rel=\"noopener\">http:\/\/emacs-fu.blogspot.fi\/<wbr \/>2012\/08\/introducing-mu4e-for-<wbr \/>email.html<\/a><br \/>\n<a href=\"http:\/\/zmalltalker.com\/linux\/mu.html\" target=\"_blank\" rel=\"noopener\">http:\/\/zmalltalker.com\/linux\/<wbr \/>mu.html<\/a><br \/>\n<a href=\"http:\/\/www.djcbsoftware.nl\/code\/mu\/mu4e\/Speedbar-support.html\" target=\"_blank\" rel=\"noopener\">http:\/\/www.djcbsoftware.nl\/<wbr \/>code\/mu\/mu4e\/Speedbar-support.<wbr \/>html<\/a><br \/>\n<a href=\"http:\/\/www.djcbsoftware.nl\/code\/mu\/mu4e\/Attaching-files-with-dired.html\" target=\"_blank\" rel=\"noopener\">http:\/\/www.djcbsoftware.nl\/<wbr \/>code\/mu\/mu4e\/Attaching-files-<wbr \/>with-dired.html<\/a><br \/>\n<a href=\"http:\/\/www.djcbsoftware.nl\/code\/mu\/mu4e\/Writing-messages.html\" target=\"_blank\" rel=\"noopener\">http:\/\/www.djcbsoftware.nl\/<wbr \/>code\/mu\/mu4e\/Writing-messages.<wbr \/>html<\/a><br \/>\n<a href=\"http:\/\/www.djcbsoftware.nl\/code\/mu\/mu4e\/Attaching-files-with-dired.html#Attaching-files-with-dired\" target=\"_blank\" rel=\"noopener\">http:\/\/www.djcbsoftware.nl\/<wbr \/>code\/mu\/mu4e\/Attaching-files-<wbr \/>with-dired.html#Attaching-<wbr \/>files-with-dired<\/a><br \/>\n<a href=\"http:\/\/www.djcbsoftware.nl\/code\/mu\/mu4e\/Viewing-images-inline.html\" target=\"_blank\" rel=\"noopener\">http:\/\/www.djcbsoftware.nl\/<wbr \/>code\/mu\/mu4e\/Viewing-images-<wbr \/>inline.html<\/a><br \/>\n<a href=\"http:\/\/www.emacswiki.org\/emacs\/mu4e\" target=\"_blank\" rel=\"noopener\">http:\/\/www.emacswiki.org\/<wbr \/>emacs\/mu4e<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>mu4e es un moderno cliente de correo basado en el indexador\/buscador de emails mu. La principal ventaja de esta herramienta es la super eficiencia a la hora de leer los correos. Entre algunas de sus funcionalidades destaca: Completamente basado en busquedas: no hay directorios, solo peticiones. Documentacion completa con ejemplos de configuracion. La interfaz de [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[297],"tags":[8,339,340,341,342,338],"class_list":["post-630","post","type-post","status-publish","format-standard","hentry","category-advanced","tag-emacs","tag-email","tag-email-in-emacs","tag-mail-en-emacs","tag-mail-in-emacs","tag-mu4e"],"_links":{"self":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/630"}],"collection":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=630"}],"version-history":[{"count":6,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/630\/revisions"}],"predecessor-version":[{"id":740,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/630\/revisions\/740"}],"wp:attachment":[{"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blackhats.es\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}