Categorías :: Cambios :: Indice :: Login :: Guegue.Com :: Búsqueda:

Revision [611]

Most recent edit made on 2007-12-16 14:44:58 by JavierWilson

Additions:
HowtoCyrusSendmailMysql


Deletions:
Este HOWTO explica como instalar Cyrus con soporte para autenticación en mysql en RHEL 5.
Instalar paquetes (via yum):
cyrus-imapd, cyrus-imapd-perl, cyrus-imapd-utils, cyrus-sasl-sql
mysql-server
service mysqld start
service cyrus-imapd start

Configurando mysql

Crear base de datos y administrador:
CREATE DATABASE cyrus;
USE cyrus;
CREATE TABLE user (user varchar(100), password varchar(100), domain varchar(100), PRIMARY KEY(user,domain));
INSERT INTO user VALUES ('cyrus','secret','host.example.com');
GRANT SELECT ON cyrus.* TO cyrus@localhost IDENTIFIED BY 'secret';

Crear otros usuarios:
INSERT INTO user VALUES ('alice','secret','example.com');
INSERT INTO user VALUES ('bob','secret','example.com');

Nota: es buena idea activar log de queries en mysql log=/var/log/mysql.log en /etc/my.cnf para depurar en caso de problemas.

Configurar cyrus: /etc/imapd.conf

imapd.conf
configdirectory: /var/lib/imap
partition-default: /var/spool/imap
admins: cyrus
sievedir: /var/lib/imap/sieve
sendmail: /usr/sbin/sendmail
hashimapspool: true
#sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN
tls_cert_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_key_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_ca_file: /etc/pki/tls/certs/ca-bundle.crt
# auth
sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: sql
sasl_sql_engine: mysql
sasl_sql_hostnames: example.com
sasl_sql_database: cyrus
sasl_sql_user: users
sasl_sql_passwd: secret
sasl_sql_select: SELECT password FROM user WHERE user = '%u' AND domain = '%r'
sasl_sql_verbose: yes
# otras opciones
altnamespace: yes
unixhierarchysep: yes
servername: host.example.com
virtdomains: userid
defaultdomain: example.com

Crear usuarios con administrador CLI cry-adm:
cyr-adm --user cyrus localhost
cm user/bob@examle.com
cm user/alice@example.com

Nota: En caso de ser el defaultdomain, no es necesario poner example.com
Nota: El uso de "/" o "." como separador depende de unixhierarchysep.

Configuración de sendmail: /etc/mail/sendmail.mc

Debe definirse cyrusv2 como local mailer, y modificar la ruta de FILE ya que no coincide con la que viene por defecto con cyrusv2. Finalmente cambiar a procmail por cyrusv2 como mailer.
sendmail.mc
define(`confLOCAL_MAILER', `cyrusv2')dnl
define(`CYRUSV2_MAILER_ARGS', `FILE /var/lib/imap/socket/lmtp')dnl
dnl MAILER(procmail)dnl
MAILER(cyrusv2)dnl

Nota: normalmente basta con descomentar las 3 lineas de cyrus y comentar la 1 de procmail.
El problema es que sendmail quita el dominio al momento de pasarlo a cyrus, entonces no hay soporte para dominios virtuales, se puede modificar el mailer /usr/share/sendmail-cf/mailer/cyrusv2.m4 para que soporte esto:
27c27
<               S=EnvFromSMTP/HdrFromL, R=EnvToL/HdrToL, E=\r\n,
---
>               S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n,

O se instala cyrusv2d, como documentado en una pagina que ya no existe http://anfi.homeunix.net/sendmail/cyrusv2.html
Ver: http://cyrusimap.web.cmu.edu/imapd/install-virtdomains.html




Revision [604]

Edited on 2007-12-13 23:34:51 by JavierWilson

Additions:

HOWTO: Cyrus + Sendmail + Mysql



Deletions:

HOWTO: Cyrus + Mysql





Revision [603]

Edited on 2007-12-13 23:34:16 by JavierWilson

Additions:
El problema es que sendmail quita el dominio al momento de pasarlo a cyrus, entonces no hay soporte para dominios virtuales, se puede modificar el mailer /usr/share/sendmail-cf/mailer/cyrusv2.m4 para que soporte esto:
27c27
< S=EnvFromSMTP/HdrFromL, R=EnvToL/HdrToL, E=\r\n,


> S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n,
O se instala cyrusv2d, como documentado en una pagina que ya no existe http://anfi.homeunix.net/sendmail/cyrusv2.html
Ver: http://cyrusimap.web.cmu.edu/imapd/install-virtdomains.html




Revision [602]

Edited on 2007-12-13 19:43:34 by JavierWilson

Additions:

Configurar cyrus: /etc/imapd.conf

Configuración de sendmail: /etc/mail/sendmail.mc



Deletions:

Configurar imapd.conf

Configuración de sendmail





Revision [601]

Edited on 2007-12-13 19:42:59 by JavierWilson

Additions:

Configurando mysql





Revision [600]

Edited on 2007-12-13 19:42:32 by JavierWilson

Additions:
INSERT INTO user VALUES ('alice','secret','example.com');
INSERT INTO user VALUES ('bob','secret','example.com');
Nota: En caso de ser el defaultdomain, no es necesario poner example.com

Configuración de sendmail

Debe definirse cyrusv2 como local mailer, y modificar la ruta de FILE ya que no coincide con la que viene por defecto con cyrusv2. Finalmente cambiar a procmail por cyrusv2 como mailer.
%%(text;;sendmail.mc)
define(`confLOCAL_MAILER', `cyrusv2')dnl
define(`CYRUSV2_MAILER_ARGS', `FILE /var/lib/imap/socket/lmtp')dnl
dnl MAILER(procmail)dnl
MAILER(cyrusv2)dnl
Nota: normalmente basta con descomentar las 3 lineas de cyrus y comentar la 1 de procmail.


Deletions:
INSERT INTO user VALUES ('alice','secret','host.example.com');
INSERT INTO user VALUES ('bob','secret','host.example.com');




Revision [599]

Edited on 2007-12-13 19:18:00 by JavierWilson

Additions:
Nota: El uso de "/" o "." como separador depende de unixhierarchysep.




Revision [598]

Edited on 2007-12-13 19:09:02 by JavierWilson

Additions:
INSERT INTO user VALUES ('alice','secret','host.example.com');
INSERT INTO user VALUES ('bob','secret','host.example.com');




Revision [597]

Edited on 2007-12-13 19:02:00 by JavierWilson

Additions:
GRANT SELECT ON cyrus.* TO cyrus@localhost IDENTIFIED BY 'secret';
Nota: es buena idea activar log de queries en mysql log=/var/log/mysql.log en /etc/my.cnf para depurar en caso de problemas.
cm user/bob@examle.com
cm user/alice@example.com


Deletions:
cm




Revision [596]

Edited on 2007-12-13 18:48:00 by JavierWilson

Additions:
%%(bash)
service mysqld start
service cyrus-imapd start




Revision [595]

Edited on 2007-12-13 18:43:03 by JavierWilson

Additions:
CREATE DATABASE cyrus;
USE cyrus;
INSERT INTO user VALUES ('cyrus','secret','host.example.com');
INSERT INTO user VALUES ('cyrus','secret','host.example.com');
INSERT INTO user VALUES ('cyrus','secret','host.example.com');


Deletions:
CREATE DATABASE cyrus
INSERT INTO user ('cyrus','secret','host.example.com');
INSERT INTO user ('cyrus','secret','host.example.com');
INSERT INTO user ('cyrus','secret','host.example.com');




Revision [594]

Edited on 2007-12-13 18:42:05 by JavierWilson

Additions:
Crear base de datos y administrador:
CREATE DATABASE cyrus
CREATE TABLE user (user varchar(100), password varchar(100), domain varchar(100), PRIMARY KEY(user,domain));
INSERT INTO user ('cyrus','secret','host.example.com');
Crear otros usuarios:
INSERT INTO user ('cyrus','secret','host.example.com');
INSERT INTO user ('cyrus','secret','host.example.com');
Crear usuarios con administrador CLI cry-adm:
cyr-adm --user cyrus localhost
cm
sasl_sql_database: cyrus
servername: host.example.com


Deletions:
Configurar base de datos:
CREATE TABLE (user varchar(100), password varchar(100), domain varchar(100), PRIMARY KEY(user,domain));
sasl_sql_database: email
servername: test.example.com




Revision [593]

Edited on 2007-12-13 18:31:49 by JavierWilson

Additions:
Instalar paquetes (via yum):
cyrus-imapd, cyrus-imapd-perl, cyrus-imapd-utils, cyrus-sasl-sql
mysql-server


Deletions:
Instalar paquetes (via yum): cyrus-imapd, cyrus-imapd-perl, cyrus-imapd-utils, cyrus-sasl-sql




Revision [592]

Edited on 2007-12-13 18:30:58 by JavierWilson

Additions:

HOWTO: Cyrus + Mysql

Este HOWTO explica como instalar Cyrus con soporte para autenticación en mysql en RHEL 5.
Instalar paquetes (via yum): cyrus-imapd, cyrus-imapd-perl, cyrus-imapd-utils, cyrus-sasl-sql
Configurar base de datos:
CREATE TABLE (user varchar(100), password varchar(100), domain varchar(100), PRIMARY KEY(user,domain));

Configurar imapd.conf

imapd.conf
configdirectory: /var/lib/imap
partition-default: /var/spool/imap
admins: cyrus
sievedir: /var/lib/imap/sieve
sendmail: /usr/sbin/sendmail
hashimapspool: true
#sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN
tls_cert_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_key_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_ca_file: /etc/pki/tls/certs/ca-bundle.crt
# auth
sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: sql
sasl_sql_engine: mysql
sasl_sql_hostnames: example.com
sasl_sql_database: email
sasl_sql_user: users
sasl_sql_passwd: secret
sasl_sql_select: SELECT password FROM user WHERE user = '%u' AND domain = '%r'
sasl_sql_verbose: yes
# otras opciones
altnamespace: yes
unixhierarchysep: yes
servername: test.example.com
virtdomains: userid
defaultdomain: example.com


Deletions:

HOWTO: integridad cyrus-mysql

Este HOWTO explica como mantener la integridad entre los datos de cuentas de correo en Mysql y en Cyrus. Pueda que existan cuentas en Cyrus porque han sido borradas desde la adminitración o panel (mysql) pero no han sido borradas usando cyradm. También al revés aunque esto sería menos común. Es importante sobretodo eliminar las cuentas fantasmas de cyrus pues cada una puede ocupar hasta 500mb.
Las herramientas aqui usadas check_mbox_mysql.pl, cyrus_list.pl, check_mbox_cyrus.pl las cree para facilitar estas tareas y estan en el home del root en beta.

Errores en Mysql

Para ver si los usuarios de mysql tienen su correspondiente en cyrus:
./check_mbox_mysql.pl

para listar solo errores, es decir usuarios solo ingresados en mysql pero cuyo mailbox no existe:
./check_mbox_mysql.pl |grep ERROR

al momento de escribir esto habian 5 errores.

Errores en Cyrus

El proceso inverso es mas complicado, pues cyrus no es sencillo de hacer consultas. para listar todos los mailboxes de cyrus (los que tienen hijos, asumimos todos los mailboxes ppales tienen hijos):
./cyrus_list.pl

para listar solo aquellos de dominio virtual (todos los de mysql corresponden a dominios virtuales al menos hasta la fecha), ordenarnolos alfabeticamente (por domino y usuario) y ponerlos en un archivo:
./cyrus_list.pl |grep "@"|sort|cut -f2 -d" ">cyrus_users.txt

finalmente para ver que limpiar de cyrus, es decir listar mailboxes fantasmas (que no existen ya en mysql) usando el archivo que acabamos de crear cyrus_users.txt:
./check_mbox_cyrus.pl
./check_mbox_cyrus.pl |grep ERROR

al momento de escribir esto existian 81 errores.

Como corregir los errores?

Borrando info@example.org
Las entradas de mas de mysql con:
# mysql -p mail
DELETE FROM user WHERE user='info@example.org'

En cyrus con delete mailbox dm... (sm... es necesario para hacerlo como usuario cyrus en cyradm):
# cyradm --user cyrus localhost
> sam user/info@example.org cyrus c
> dm user/info@example.org

NOTA: es posible generar un script en perl que genere las lineas sam y dm necesarias en los casos de ERROR y luego solo dar copy and paste en cyradm. Un intento con dos lineas en el shell:
Genera las lineas sam (esto aplicamos luego en cyradm):
./check_mbox_cyrus.pl |grep ERROR|cut -f1 -d" "|sed -e 's/^/sam user\//g'|sed -e 's/$/ cyrus c/g'

Genera las lineas dm (esto aplicamos luego en cyradm):
./check_mbox_cyrus.pl |grep ERROR|cut -f1 -d" "|sed -e 's/^/dm user\//g'

O ambas con awk:
./check_mbox_cyrus.pl |grep ERROR|cut -f1 -d" "|awk '{print "sam user/"$1" cyrus c\ndm user/"$1}'

NOTA2: este proceso es importante porque nos puede ahorrar gigas de espacio en el disco




Revision [564]

Edited on 2007-11-27 12:38:37 by JavierWilson

Additions:



Deletions:





Revision [495]

Edited on 2007-10-18 12:43:55 by JavierWilson

Additions:
./check_mbox_cyrus.pl |grep ERROR|cut -f1 -d" "|awk '{print "sam user/"$1" cyrus c\ndm user/"$1}'


Deletions:
./check_mbox_cyrus.pl |grep ERROR|cut -f1 -d" "|awk '{print "sam user/"$1 "cyrus c\ndm user/"$1}'




Revision [494]

Edited on 2007-10-18 12:40:28 by JavierWilson

Additions:
El proceso inverso es mas complicado, pues cyrus no es sencillo de hacer consultas. para listar todos los mailboxes de cyrus (los que tienen hijos, asumimos todos los mailboxes ppales tienen hijos):


Deletions:
El proceso inverso es mas complicado, pues cyrus no es sencillo de hacer consultas. para listar todos los mailboxes de cyrus (los que tienen hijos, asumimos todos los mailboxes ppales tienen
hijos):




Revision [493]

Edited on 2007-10-18 12:40:18 by JavierWilson

Additions:
O ambas con awk:
./check_mbox_cyrus.pl |grep ERROR|cut -f1 -d" "|awk '{print "sam user/"$1 "cyrus c\ndm user/"$1}'




Revision [293]

Edited on 2007-07-18 08:56:39 by JavierWilson

Additions:
./check_mbox_cyrus.pl |grep ERROR%%


Deletions:
/check_mbox_cyrus.pl |grep ERROR%%




Revision [118]

The oldest known version of this page was edited on 2007-04-25 15:52:53 by JavierWilson

HOWTO: integridad cyrus-mysql


Este HOWTO explica como mantener la integridad entre los datos de cuentas de correo en Mysql y en Cyrus. Pueda que existan cuentas en Cyrus porque han sido borradas desde la adminitración o panel (mysql) pero no han sido borradas usando cyradm. También al revés aunque esto sería menos común. Es importante sobretodo eliminar las cuentas fantasmas de cyrus pues cada una puede ocupar hasta 500mb.

Las herramientas aqui usadas check_mbox_mysql.pl, cyrus_list.pl, check_mbox_cyrus.pl las cree para facilitar estas tareas y estan en el home del root en beta.

Errores en Mysql

Para ver si los usuarios de mysql tienen su correspondiente en cyrus:

./check_mbox_mysql.pl


para listar solo errores, es decir usuarios solo ingresados en mysql pero cuyo mailbox no existe:

./check_mbox_mysql.pl |grep ERROR


al momento de escribir esto habian 5 errores.

Errores en Cyrus

El proceso inverso es mas complicado, pues cyrus no es sencillo de hacer consultas. para listar todos los mailboxes de cyrus (los que tienen hijos, asumimos todos los mailboxes ppales tienen
hijos):

./cyrus_list.pl


para listar solo aquellos de dominio virtual (todos los de mysql corresponden a dominios virtuales al menos hasta la fecha), ordenarnolos alfabeticamente (por domino y usuario) y ponerlos en un archivo:

./cyrus_list.pl |grep "@"|sort|cut -f2 -d" ">cyrus_users.txt


finalmente para ver que limpiar de cyrus, es decir listar mailboxes fantasmas (que no existen ya en mysql) usando el archivo que acabamos de crear cyrus_users.txt:

./check_mbox_cyrus.pl
/check_mbox_cyrus.pl |grep ERROR


al momento de escribir esto existian 81 errores.

Como corregir los errores?


Borrando info@example.org

Las entradas de mas de mysql con:

# mysql -p mail
DELETE FROM user WHERE user='info@example.org'


En cyrus con delete mailbox dm... (sm... es necesario para hacerlo como usuario cyrus en cyradm):

# cyradm --user cyrus localhost
> sam user/info@example.org cyrus c
> dm user/info@example.org


NOTA: es posible generar un script en perl que genere las lineas sam y dm necesarias en los casos de ERROR y luego solo dar copy and paste en cyradm. Un intento con dos lineas en el shell:

Genera las lineas sam (esto aplicamos luego en cyradm):

./check_mbox_cyrus.pl |grep ERROR|cut -f1 -d" "|sed -e 's/^/sam user\//g'|sed -e 's/$/ cyrus c/g'


Genera las lineas dm (esto aplicamos luego en cyradm):

./check_mbox_cyrus.pl |grep ERROR|cut -f1 -d" "|sed -e 's/^/dm user\//g'


NOTA2: este proceso es importante porque nos puede ahorrar gigas de espacio en el disco



CategorySysAdmin
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki
Page was generated in 0.1189 seconds