Filtrando listas de correo con procmail en es.gnu.org
Esta receta es personal para mi correo de es.gnu.org, pero le valdrá a cualquiera que tenga instalado procmail en su propio servidor. El .procmailrc situado en $HOME sería algo como:
# .procmailrc
# routes incoming mail to appropriate mailboxes
PATH=/usr/bin:/usr/local/bin
# MAILDIR=$HOME/Maildir # all mailboxes are in .mailspool/
# DEFAULT=$HOME/Maildir/inbox
LOGFILE=$HOME/mail.log
SHELL=/bin/bash
# Put mail from emacs-orgmode mailing list into mailbox emacs-orgmode
:0:
* ^(From|Cc|To).*emacs-orgmode@gnu.org
$HOME/emacs-orgmode
:0:
* ^(From|Cc|To).*emacs-es@es.gnu.org
$HOME/emacs-es
En gnu-es usamos squirrelmail y es posible suscribirse a ficheros desde el enlace Carpetas. Una vez suscrito ya es posible acceder a la carpeta desde vuestro cliente de correo preferido, en caso de gnus presionando U desde el Summary.
Crear un repositorio git en un servidor
En el servidor
cd ~ mkdir repository.git cd repository.git git --bare init git repo-config core.sharedRepository true
En local:
mkdir repository cd repository git init git add * git commit -m "Initial import" git remote add origin git+ssh://user@server/~user/repository.git git push origin master
Bajar git:
git clone git+ssh://user@server/~user/repository.git
Qué hacer si recibes un fichero .org
Si lo quieres modificar y no quieres usar el emacs (se descarga desde
http://ftp.gul.es/gnu/ftp.gnu.org/gnu/emacs/
) yo creo que lo mejor es abrirlo desde, por ejemplo, el openoffice/libreoffice (Archivo -> Abrir y eliges el fichero descargado). En Word supongo que es igual, pero no tengo un Word para probarlo.
Los títulos empiezan con * y los subtítulos empiezan con ** y los subsubtítulos con *** y así sucesivamente. No necesitas saber nada más pues no uso más artificios para los ficheros que estoy compartiendo contigo. Desde el emacs es muy cómodo navegar por el fichero porque al principio solo se ven los títulos y al dar a la tecla TAB se despliegan los subtítulos y si vuelves a dar a TAB se vuelven a plegar. Si los abres con Word u OpenOffice aparece todo desplegado y tienes que tirar de scroll como te pasa en cualquier otro documento .doc u .odt
Org mode es todo un mundo y esta es su página oficial
http://orgmode.org/es/index.html
por si te interesa, que igual no, por lo que no me enrrollo más.
Gnus + Gmail + Offlineimap
En un anterior artículo se ha explicado como tener emacs funcionando con gnus para leer el correo de Gmail. En este artículo daremos un paso adelante: poder leer correo imap desconectados teniendo una copia de todo el correo en local y sincronizarlo de manera eficaz.
Con apt-get install dovecot-imapd instalamos el servidor imap al que accederemos desde gnus. La configuración de dovecot que viene en debian es extensa y consta de muchos ficheros, interesa meter una sola línea:
mail_location = maildir:%h/Maildir
Y lo haremos en el fichero /etc/dovecot/conf.d/10-mail.conf
Offlineimap realizará el trabajo de sincronizar el directorio ~/Maildir con Gmail. Con apt-get install offlineimap instalamos la aplicación en debian/ubuntu. La configuración del fichero ~/.offlineimaprc sería:
[general]
accounts = Gmail
maxsyncaccounts = 1
[Account Gmail]
localrepository = Local
remoterepository = Remote
[Repository Local]
type = IMAP
remotehost = localhost
port = 993
remoteuser = miusuario
[Repository Remote]
type = Gmail
remoteuser = miusuario@gmail.com
remotepass = micontraseña
holdconnectionopen = true
keepalive = 60
Ahora ya se puede lanzar offlineimap, la primera vez lo mejor es hacerlo desde línea de comandos y si llevas años usando gmail es probable que tarde bastante en descargar todo el correo.
Mientras eso ocurre se puede configurar gnus por ejemplo de la siguiente manera:
(setq gnus-select-method
'(nnimap "Mail"
(nnimap-address "localhost")
(nnimap-stream network)
(nnimap-authenticator login)))
Una vez que se ha descargado el correo se puede ver que todo va bien haciendo M-x gnus desde emacs.
Puesto que para tener el correo actualizado es necesario ejecutar offlineimap he creado la siguiente función interactiva para ello:
(defun offlineimap ()
(interactive)
(shell-command "offlineimap&" "*offlineimap*" nil))
Una vez añadida al .emacs y cargada se llama con M-x offlineimap.
Stumpwm: lisp en el gestor de ventanas
Stumpwm es un gestor de ventanas atilado escrito en common lisp. Esto le hace ser considerablemente más rápido que utilizar gnome, unity o kde. Si lo que sueles hacer la mayor parte de tu tiempo es usar un editor de textos, un navegador y alguna otra aplicación se hace realmente productivo.
Pero empecemos por la instalación en debian/ubuntu basta con:
apt-get install stumpwm
Pero después es necesario crear el fichero /usr/share/xsessions/stumpwm.desktop con el siguiente contenido:
[Desktop Entry] Encoding=UTF-8 Name=StumpWM Comment=Tiling Window Manager Exec=/usr/bin/stumpwm Icon= Type=Application
Una vez hecho esto deberíamos poder elegir stumpwm, por ejemplo, en el gdm. Al arrancar stumpwm vemos una pequeña ventana que nos invita a ejecutar C-t ? para conocer los atajos.
Los importantes para empezar son:
- C-t c: abrir una consola
- C-t e: abrir el emacs
- C-t !: ejecutar un comando de consolar
- C-t C-t: volver a la ventana anterior
- C-t w: listar las ventanas abiertas
- C-t 0: ir a la ventana número 0 (con otros números iremos a ventanas distintas)
Para evaluar código lisp se usa C-t :. Así, podemos evaluar:
- (+ 2 2): evalúa una suma de dos más dos
- (loadrc): evalúa el fichero .stumpwmrc
- (quit): sale de la sesión
Mi .stumpwmrc es realmente simple, ya que llevo muy poco tiempo utilizando este entorno, pero puede ser útil para otros principiantes como yo:
(in-package :stumpwm)
(setf *default-package* :stumpwm)
;; Cambio el prefijo C-t por C-z
(set-prefix-key (kbd "C-z"))
;; Creo el comando iceweasel
(defcommand iceweasel () ()
"Start/Switch to Iceweasel."
(run-or-raise "iceweasel" '(:class "Iceweasel")))
;; Ahora con C-z C-i iré al iceweasel
(stumpwm:define-key stumpwm:*root-map* (stumpwm:kbd "C-i") "iceweasel")
;; Creo el comando wikipedia
(defcommand wikipedia (search)
((:string "Search in Wikipedia for: "))
"docstring"
(check-type search string)
(substitute #\+ #\Space search)
(run-or-raise
(concat "iceweasel http://www.wikipedia.org/wiki/" search)
'(:class "Wikipedia")))
;; Arranca el network-manager al iniciar (para conectar vía wifi)
(run-shell-command "nm-applet --sm-disable")
Las cosas que he encontrado útiles de stumpwm son:
- tener atajos para ir directamente al emacs, ó al navegador independientemente de cuantas ventanas tengo abiertas, no como con Alt+TAB que le tienes que dar unas cuantas veces
- tener el fichero de configuración en lisp
- su rapidez, especialmente vital en máquinas lentas
¿A vosotras/os que os parece?
Múltiples cuentas de smtp en GNUS con msmtp
En un artículo anterior ya se explico cómo configurar Gmail en Gnus incluyendo el servidor de smtp. La idea de este artículo es que Gnus elija el servidor smtp en función del from que introducimos.
Hay diferentes formas de gestionar esto. Aquí se ha elegido usar msmtp por su estabilidad y sencillez.
Así es que lo primero será instalar msmtp:
sudo apt-get install msmtp
Después se crea un fichero .msmtprc para almacenar las cuentas de smtp:
################################# account gmail host smtp.gmail.com domain smtp.gmail.com tls on tls_certcheck off tls_starttls on auth on user correo@gmail.com from correo@gmail.com password XXXXXXXX port 587 logfile ~/msmtplog.txt ################################## account gnues host chapters.gnu.org domain chapters.gnu.org tls on tls_certcheck off tls_starttls on auth on user miusuario from miusuario@es.gnu.org password XXXXXXXXX port 25 logfile ~/msmtplog.txt ##################################
Una vez hecho esto se cambian los permisos del fichero de configuración:
chmod 600 ~/.msmtprc
Y ahora se reemplaza la configuración que hubiera en el .emacs relativa a smtp por lo siguiente:
(defun cg-feed-msmtp ()
(if (message-mail-p)
(save-excursion
(let* ((from
(save-restriction
(message-narrow-to-headers)
(message-fetch-field "from")))
(account
(cond
;; I use email address as account label in ~/.msmtprc
((string-match "correo@gmail.com" from) "gmail")
;; Add more string-match lines for your email accounts
((string-match "miusuario@es.gnu.org" from) "gnues"))))
(setq message-sendmail-extra-arguments (list "-a" account))))))
(setq message-sendmail-envelope-from 'header)
(add-hook 'message-send-mail-hook 'cg-feed-msmtp)
;; with Emacs 23.1, you have to set this explicitly (in MS Windows)
;; otherwise it tries to send through OS associated mail client
(setq message-send-mail-function 'message-send-mail-with-sendmail)
;; we substitute sendmail with msmtp
(setq sendmail-program "/usr/bin/msmtp")
Modificando claro lo relativo al correo y a las etiquetas de msmtp que hayais puesto.
Con esto ya debería valer, pero podéis depurar posibles errores lanzando msmtp desde línea de comandos y revisando el log que en este caso está en ~/msmtplog.txt
Suerte!