# [Portage] No envia mail con los logs (solucionado)

## T0m4S

Bueno esto ya es un pequeño problemilla no serio para tener el sistema al 100% a mí gusto. El caso es que quiero que cuando hago un emerge aparte de guardar el log físicamente en el ordenador me lo mande por correo a una cuenta de gmail que me he creado para recibir todos los mensajes y avisos de gentoo.

Este es mi make.conf:

```
# These settings were set by the catalyst build script that automatically

# built this stage.

# Please consult /etc/make.conf.example for a more detailed example.

CFLAGS="-O2 -march=prescott -pipe -fomit-frame-pointer" #Flags seguras

CXXFLAGS="${CFLAGS}"

CXXFLAGS="${CXXFLAGS} -ffriend-injection"

CXXFLAGS="${CXXFLAGS} -fvisibility-inlines-hidden"

CXXFLAGS="${CXXFLAGS} -frepo"   ### Suele dar problemas al compilar

# WARNING: Changing your CHOST is not something that should be done lightly.

# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.

CHOST="i686-pc-linux-gnu"

LINGUAS="es"

### Control de errores en compilacion ###

PORTAGE_ELOG_CLASSES="log error warn info"

PORTAGE_ELOG_SYSTEM="syslog save mail"

PORTAGE_ELOG_MAILURI="xxxxxx@gmail.com xuser:ypassword@smtp.gmail.com:100587"

PORTAGE_ELOG_MAILSUBJECT="package \${PACKAGE} merged on \${HOST} with notice"

### Fin errores compilacion ###

MAKEOPTS="-j3"

GENTOO_MIRRORS="http://trumpetti.atm.tut.fi/gentoo/"

SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"

PORTAGE_RSYNC_RETRIES="3"

ACCEPT_KEYWORDS="x86"

AUTOCLEAN="yes"

EMERGE_DEFAULT_OPTS="--ask --verbose"

DISTDIR="/usr/portage/distfiles"

PKGDIR="/usr/portage/packages"

PORTAGE_TMPDIR="/tmp"

PORTDIR="/usr/portage"

INPUT_DEVICES="keyboard mouse synaptics"

VIDEO_CARDS="fglrx radeon vesa"#fglrx radeon

FEATURES="ccache parallel-fetch"

### USE flags ###

USE="x86"

USE="${USE} X"

USE="${USE} bash-completion"

USE="${USE} kde"

USE="${USE} nptl"

USE="${USE} nptlonly"

USE="${USE} binary-drivers"

USE="${USE} qt3"

USE="${USE} qt4"

USE="${USE} sockets"

USE="${USE} udev"

USE="${USE} unicode"

USE="${USE} bitmap-fonts"

USE="${USE} eds"

USE="${USE} foomatic"

USE="${USE} -gdbm"

USE="${USE} -gnome"

USE="${USE} gpm"

USE="${USE} imlib"

USE="${USE} libwww"

USE="${USE} mad"

USE="${USE} mikmod"

USE="${USE} motif"

USE="${USE} pdf"

USE="${USE} sdl"

USE="${USE} spell"

USE="${USE} truetype"

USE="${USE} vorbis"

USE="${USE} xml"

USE="${USE} xml2"

USE="${USE} xv"

USE="${USE} tiff"

USE="${USE} bzip2"

USE="${USE} hal"

USE="${USE} nas"

USE="${USE} -sasl"

USE="${USE} java"

USE="${USE} javascript"

USE="${USE} jpeg"

USE="${USE} jpg"

USE="${USE} aalib"

USE="${USE} acpi"

USE="${USE} alsa"

USE="${USE} apm"

USE="${USE} audiofile"

USE="${USE} avi"

USE="${USE} -berkdb"

USE="${USE} bmp"

USE="${USE} caps"

USE="${USE} cdparanoia"

USE="${USE} cdr"

USE="${USE} crypt"

USE="${USE} cups"

USE="${USE} dga"

USE="${USE} dvd"

USE="${USE} dvdr"

USE="${USE} dvdread"

USE="${USE} encode"

USE="${USE} esd"

USE="${USE} fbcon"

USE="${USE} flac"

USE="${USE} ffmpeg"

USE="${USE} gd"

USE="${USE} gif"

USE="${USE} glut"

USE="${USE} gphoto2"

USE="${USE} gstreamer"

USE="${USE} iconv"

USE="${USE} imagemagick"

USE="${USE} libcac"

USE="${USE} ldap"

USE="${USE} mbox"

USE="${USE} mime"

USE="${USE} mozilla"

USE="${USE} mozilla-firefox"

USE="${USE} mp3"

USE="${USE} mpeg"

USE="${USE} msn"

USE="${USE} ncurses"

USE="${USE} nls"

USE="${USE} ogg"

USE="${USE} oggvorbis"

USE="${USE} perl"

USE="${USE} php"

USE="${USE} png"

USE="${USE} python"

USE="${USE} quicktime"

USE="${USE} readline"

USE="${USE} samba"

USE="${USE} ssl"

USE="${USE} svg"

USE="${USE} symlink"

USE="${USE} tcpd"

USE="${USE} threads"

USE="${USE} usb"

USE="${USE} userlocales"

USE="${USE} vcd"

USE="${USE} videos"

USE="${USE} logitech-mouse"

USE="${USE} -3dnow"

USE="${USE} gtk"

USE="${USE} wifi"

USE="${USE} madwifi"

USE="${USE} xine"

USE="${USE} xosd"

USE="${USE} xpm"

USE="${USE} xprint"

USE="${USE} xvid"

USE="${USE} zlib"

USE="${USE} mmx"

USE="${USE} sse"

USE="${USE} sse2"

USE="${USE} wmf"

USE="${USE} jpeg2k"

USE="${USE} network"

USE="${USE} mjpeg"

USE="${USE} -kerberos"

USE="${USE} xscreensaver"

USE="${USE} rar"

USE="${USE} mysql"

USE="${USE} win32codecs"

USE="${USE} arts"

USE="${USE} flash"

USE="${USE} matroska"

USE="${USE} aac"

USE="${USE} real"

USE="${USE} amazon"

USE="${USE} cddb"

USE="${USE} fortran"

USE="${USE} injection"

USE="${USE} libg++"

USE="${USE} ipv6"

USE="${USE} fam"

USE="${USE} laptop"

USE="${USE} midi"

#USE="${USE} seamokey"

USE="${USE} xulrunner"

USE="${USE} v4l"

USE="${USE} v4l2"

USE="${USE} oss"

USE="${USE} opengl"

USE="${USE} glitz"

USE="${USE} exif"

USE="${USE} smp"

USE="${USE} dbus"

USE="${USE} mng"

USE="${USE} ipod"

USE="${USE} visualization"

USE="${USE} nsplugin"

USE="${USE} wavpack"

USE="${USE} lame"

USE="${USE} geoip"

USE="${USE} upnp"

USE="${USE} yahoo"

USE="${USE} irc"

USE="${USE} texteffect"

USE="${USE} firefox"

USE="${USE} divx"

USE="${USE} realmedia"

USE="${USE} wmp"

USE="${USE} xcb"
```

(Sé que las use las debería tener todas en una línea pero cuando tenga tiempo quiero ordenarlas alfabéticamente y ponerle un comentario a cada una explicando para que sirve)

El caso es que la parte de la configuración del PORTAGE_ELOG_MAILURI debe tener algún fallo o algo que no sé qué es que hace que no me funcione y me salga siempre esté error al acabar un emerge que tenga alguna información warning o algo:

```
>>> net-im/skype-2.0.0.63 merged.

Traceback (most recent call last):

  File "/usr/bin/emerge", line 6979, in <module>

    retval = emerge_main()

  File "/usr/bin/emerge", line 6973, in emerge_main

    myopts, myaction, myfiles, spinner)

  File "/usr/bin/emerge", line 6403, in action_build

    retval = mergetask.merge(pkglist, favorites, mtimedb)

  File "/usr/bin/emerge", line 3989, in merge

    return self._merge(mylist, favorites, mtimedb)

  File "/usr/bin/emerge", line 4267, in _merge

    prev_mtimes=ldpath_mtimes)

  File "/usr/lib/portage/pym/portage.py", line 4817, in doebuild

    vartree=vartree, prev_mtimes=prev_mtimes)

  File "/usr/lib/portage/pym/portage.py", line 5012, in merge

    mydbapi=mydbapi, prev_mtimes=prev_mtimes)

  File "/usr/lib/portage/pym/portage.py", line 9485, in merge

    mydbapi=mydbapi, prev_mtimes=prev_mtimes)

  File "/usr/lib/portage/pym/portage.py", line 9495, in _merge

    elog_process(self.mycpv, self.settings)

  File "/usr/lib/portage/pym/portage.py", line 602, in elog_process

    m.process(mysettings, cpv, mod_logentries, mod_fulllog)

  File "/usr/lib/portage/pym/elog_modules/mod_mail.py", line 12, in process

    myrecipient = mysettings["PORTAGE_ELOG_MAILURI"].split()[0]

IndexError: list index out of range

```

Yo lo he configurado como dice en el make.conf.example:

```

# PORTAGE_ELOG_MAILURI: this variable holds all important settings for the mail

#                       module. In most cases listing the recipient address and

#                       the receiving mailserver should be sufficient, but you can

#                       also use advanced settings like authentication or TLS. The

#                       full syntax is:

#                           address [[user:passwd@]mailserver[:port]]

#                       where

#                           address:    recipient address

#                           user:       username for smtp auth (defaults to none)

#                           passwd:     password for smtp auth (defaults to none)

#                           mailserver: smtp server that should be used to deliver the mail (defaults to localhost)

#                                       alternatively this can also be a the path to a sendmail binary if you don't want to use smtp

#                           port:       port to use on the given smtp server (defaults to 25, values > 100000 indicate that starttls should be used on (port-100000))

#                       Examples:

#PORTAGE_ELOG_MAILURI="root@localhost localhost" (this is also the default setting)

#PORTAGE_ELOG_MAILURI="user@some.domain mail.some.domain" (sends mails to user@some.domain using the mailserver mail.some.domain)

#PORTAGE_ELOG_MAILURI="user@some.domain user:secret@mail.some.domain:100465" (this is left uncommented as a reader exercise ;)

```

 el puerto he puesto el 100587 para que use el starttls que requiere gmail. Mail sí me funciona configurado con ssmtp para que use la cuenta de gmail así. También he probado con el puerto 465 como dice la ayuda de gmail pero no va. 

¿Alguien sabe que pasa?Last edited by T0m4S on Thu Oct 30, 2008 10:08 am; edited 1 time in total

----------

## T0m4S

Ya he descubierto porque daba ese error. Era porque la contraseña de la cuenta de correo contenía el símbolo $ y se ve que lo toma como una variable lo que viene después y por eso fallaba (en mi opinión esto es un bug y no debería ser así porque mucha gente usa ese símbolo en las contraseñas).

Ahora el error que me da es este:

```
Timeout in elog_process for system 'mail'

```

¿Alguna sugerencia?

----------

## Theasker

¿Tienes algún MTA instalado?, creo que para enviar un email tienes q tener un servidor de correo instalado.

Otra opción que tengo yo pendiente es usar el programa sendEmail aprovechando el ELOG_COMMAND (creo) q te permite ejecutar un programa/script con cada emerge por lo que podrías enviar un correo usando este programa y las variables en las que el portage guarda la información del emerge y los mensajes de error, con lo que usando este sistema podráis enviarte un correo sin necesidad de instalar ningún servidor de correo. Aunque ya te digo que yo lo tengo pendiente y tenía pensado hacer un mini howto para la gente que esté interesada pero ... tengo que sacar tiempo.

Espero que te haya servido y que si me equivoco en algo que me corrijan, no suelo ayudar por falta de conocimientos, más bien suele ser al revés  :Smile: .

un saludo de código abierto

----------

## sefirotsama

 *T0m4S wrote:*   

> Ya he descubierto porque daba ese error. Era porque la contraseña de la cuenta de correo contenía el símbolo $ y se ve que lo toma como una variable lo que viene después y por eso fallaba (en mi opinión esto es un bug y no debería ser así porque mucha gente usa ese símbolo en las contraseñas).

 

antes de un símbolo especial pon \ para recrear el string. Por ejemplo, si tu contraseña es:

```
paco "$\44
```

posiblemente deberías poner:

```
paco\ \"\$\\44
```

O algo similar antes de los caracteres especiales que te detecten el string. Eso es culturilla básica... aunque nos ha pasado a todos alguna vez.

----------

## Coghan

 *Theasker wrote:*   

> ¿Tienes algún MTA instalado?, creo que para enviar un email tienes q tener un servidor de correo instalado.
> 
> Otra opción que tengo yo pendiente es usar el programa sendEmail aprovechando el ELOG_COMMAND (creo) q te permite ejecutar un programa/script con cada emerge por lo que podrías enviar un correo usando este programa y las variables en las que el portage guarda la información del emerge y los mensajes de error, con lo que usando este sistema podráis enviarte un correo sin necesidad de instalar ningún servidor de correo. Aunque ya te digo que yo lo tengo pendiente y tenía pensado hacer un mini howto para la gente que esté interesada pero ... tengo que sacar tiempo.
> 
> Espero que te haya servido y que si me equivoco en algo que me corrijan, no suelo ayudar por falta de conocimientos, más bien suele ser al revés .
> ...

 

No es necesario tener un MTA instalado en tu Gentoo para esto, fíjate en la línea de ejemplo del make.conf.example:

```
#PORTAGE_ELOG_MAILURI="user@some.domain user:secret@mail.some.domain:100465" 
```

Esta variable está dividida en dos campos, el correo de destino y el servidor smtp de envío con los datos de la validación, y como opcional el puerto si es distinto del 25.

----------

## esteban_conde

 *Quote:*   

> secret@mail.some.domain:100465"

 

¿Se ha aumentado el numero de puertos con los nuevos procesadores?

----------

## T0m4S

 *sefirotsama wrote:*   

>  *T0m4S wrote:*   Ya he descubierto porque daba ese error. Era porque la contraseña de la cuenta de correo contenía el símbolo $ y se ve que lo toma como una variable lo que viene después y por eso fallaba (en mi opinión esto es un bug y no debería ser así porque mucha gente usa ese símbolo en las contraseñas). 
> 
> antes de un símbolo especial pon \ para recrear el string. Por ejemplo, si tu contraseña es:
> 
> ```
> ...

 

...esto si que no lo sabía, pero bueno cada día se aprende algo nuevo...

 *Quote:*   

> ¿Se ha aumentado el numero de puertos con los nuevos procesadores?

 

No. Al usar un número mayor de 100000 lo que hace es usar starttls en el puerto que sale al restarle 100000 8lo pone en la documentación que esta en el primer post.

Alguna idea de por qué sale el error del timeout?

----------

## Theasker

pues yo he puesto esta línea y no hace nada, ni me da error ni manda correo ni na:

```
PORTAGE_ELOG_MAILURI="theasker@gmail.com theasker:xxxxxx@smtp.gmail.com"
```

----------

## T0m4S

 *Theasker wrote:*   

> pues yo he puesto esta línea y no hace nada, ni me da error ni manda correo ni na:
> 
> ```
> PORTAGE_ELOG_MAILURI="theasker@gmail.com theasker:xxxxxx@smtp.gmail.com"
> ```
> ...

 

Si yo pongo eso me da este error:

```
!!! An error occured while trying to send logmail:

SMTP AUTH extension not supported by server.
```

Debes poner:

```
PORTAGE_ELOG_MAILURI="theasker@gmail.com theasker:xxxxxx@smtp.gmail.com:100465"

PORTAGE_ELOG_MAILURI="theasker@gmail.com theasker:xxxxxx@smtp.gmail.com:100587"
```

Para que use STARTTLS en los puertos que dice la ayuda de gmail:http://mail.google.com/support/bin/answer.py?answer=78799

Ya he descubierto que fallaba y es que tenia que poner:

 *Quote:*   

> PORTAGE_ELOG_MAILURI="xxxxxx@googlemail.com xuser:ypassword@smtp.gmail.com:100587" 

 

Es de cier, mail@googlemail.com en ve de mail@gmail.com porque estoy en alemania y la cuenta la he creado aquí y no se porque aquí no pueden usar gmail. Por ejemplo si escribes www.gmail.com en el navegador te da este mensaje:

```
No podemos proporcionar servicio con el nombre Gmail en Alemania, aquí nos llamamos Google Mail.

Si viajas por Alemania, puedes acceder a tu correo en http://mail.google.com.

Y nos gustaría enlazar la URL anterior, pero no podemos hacer eso tampoco. ¡Que fastidio!

Para obtener información general sobre Google, visita www.google.com o www.google.de.
```

Así que tema solucionado, muchas gracias a todos   :Wink: 

----------

## Inodoro_Pereyra

Me ha resultado interesantísimo todo el hilo, no se me había ocurrido la idea de usar gmail para eso. Va derecho a mis marcadores.

Salud!

----------

## Theasker

yo a parte de usarlo para eso, tengo una cuenta específica para el backup de /etc/

----------

## T0m4S

 *Inodoro_Pereyra wrote:*   

> Me ha resultado interesantísimo todo el hilo, no se me había ocurrido la idea de usar gmail para eso. Va derecho a mis marcadores.
> 
> Salud!

 

Yo de todos modos te recomiendo que te crees una cuenta específica para enviar los correos y que te lleguen a tu cuenta normal si quieres. Lo digo por el hecho de no tener la contraseña de tu cuenta normal escrita en un archivo de texto plano sin encriptar. Para ello sólo tendrías que poner la cuenta a la que quieres que te llegue el correo la primero y luego los datos de login de la cuenta desde la que mandas el correo. Seria así:

```
PORTAGE_ELOG_MAILURI="correonormal@googlemail.com correoespecifico:contraseñacorreoespecífico@smtp.gmail.com:100587"
```

Yo lo hago así y va sin problemas,

----------

## T0m4S

 *Theasker wrote:*   

> bueno, ya que está abierto este hilo, y por ahora no consigo hacer funcionar lo de enviarlo por correo, pido sugerencias a ver que narices hago mal he probado con todo esto
> 
> ```
> PASS="xxx"
> 
> ...

 

La primera línea del PORTAGE_ELOG_MAILURI debería funcionar pero para que se envien los mails tienes que activar en PORTAGE_ELOG_SYSTEM mail:

```
PORTAGE_ELOG_CLASSES="log error warn info"

PORTAGE_ELOG_SYSTEM="syslog save mail"
```

Así lo tengo yo.

De todos modos mira esto:

https://forums.gentoo.org/viewtopic-t-195629.html

Sobre todo la sección: "¡Cuánto texto! ¿Y si me pierdo algún mensaje importante?"

Espero que con esto se te solucione el problema.

----------

## Theasker

arreglado, gracias por la ayuda.

Esta sección del envio de los mensajes postemerge al correo está mejor explicada en este hilo y en el /etc/make.conf.example que en el howto de "como usar el portage correctamente" que ya lo tengo machacado.

El problema era por lo que se ve el puerto que era 587 y no el 465, aunque se me hace raro.

Gracias por la ayuda

----------

