por alguna de esas razones, de repente se quiere vaciar la cola de mails (normalmente por que no entrega y estaaaaaa ahi).
para ver la cola de mails el comando es:
mailq
y el comando para borrar la cola de entregas de mail es:
postsuper -d ALL

por alguna de esas razones, de repente se quiere vaciar la cola de mails (normalmente por que no entrega y estaaaaaa ahi).
para ver la cola de mails el comando es:
mailq
y el comando para borrar la cola de entregas de mail es:
postsuper -d ALL
bueno este esta espectacular….
para que los usuarios que utilizan el webmail roundcube puedan cambiar sus contraseñas que se setearon en el postfixadmin
en este caso tenemos todo instalado el webmail roundcube (ver post anteriores) y el postfixadmin desde donde creamos nuestro buzones de correo.
bueno para habilitar el cambio de contraseñas tenemos que cambiar un par de lineas en unos archivos que les voy a decir ahora…
en el archivo de configuracion del roundcube (main.inc.php)
cambiamos esta linea
$rcmail_config['plugins'] = array('');
por
$rcmail_config['plugins'] = array('password');
despues ingresamos a la consolita en el rootpath del roundcube (en el post anterior estaba en /srv/www/htdocs/webmail/) y hacemos esto
# cd plugins/password/ # cp config.inc.php.dist config.inc.php
y despues editamos el archivo de configuracion del plugin password (o sea config.inc.php)
las lineas
$rcmail_config['password_db_dsn'] = '';
por
$rcmail_config['password_db_dsn'] = 'mysql://usuario:password@hostbd/basededatospostfixadmin';
(esta parte tienen que completar con sus propios datos no con estos que paso :s )
y
$rcmail_config['password_query'] = 'SELECT update_passwd(%c, %u)';
por
$rcmail_config['password_query'] = 'UPDATE `mailbox` SET password=%c WHERE `username` = %u LIMIT 1;';
y listo el posho… en la parte de configuracion del webmail les va a aparecer una nueva pestaña en la que se va a poder cambiar el password.
para que salgan los mensajes en español hay que editar el archivo
./localization/en_US.inc
Bueno…
me doy cuenta que no habia puesto todavia el tema webmail aca….
instalamos todo el postfix con autenticacion mysql, creamos la cuenta con el postfixadmin…
pero no tenemos webmail jejejeje.
bueno comencemos a instalar en el opensuse siempre….
vamos a usar el webmail roundcube
primero que nada tenemos que crear una base de datos para el webmail (no tengo ganas de explicar como)
a esta base de datos le vamos a llamar roundcubemail…
entramos en nuestro html root path o sea en el suse /srv/www/htdocs/
# cd /srv/www/htdocs/ # wget http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/0.3.1/roundcubemail-0.3.1.tar.gz?use_mirror=ufpr # tar -zxvf roundcubemail-0.3.1.tar.gz # mv roundcubemail-0.3.1 webmail # chown wwwrun.www -R webmail/ # cd webmail/config/ # cp main.inc.php.dist main.inc.php # cp db.inc.php.dist db.inc.php
editamos los valores del archivo main.inc.php
$rcmail_config['username_domain'] = '';
por
$rcmail_config['username_domain'] = 'midominio.com';
(midominio.com es el nombre del dominio que queremos usar para el webmail)
$rcmail_config['default_host'] = '';
por
$rcmail_config['default_host'] = 'localhost';
$rcmail_config['smtp_server'] = '';
por
$rcmail_config['smtp_server'] = 'localhost';
$rcmail_config['create_default_folders'] = FALSE;
por
$rcmail_config['create_default_folders'] = TRUE;
$rcmail_config['enable_installer'] = false;
por
$rcmail_config['enable_installer'] = true;1 despues editamos el archivo db.inc.php la linea 1$rcmail_config['db_dsnw'] = 'mysql://roundcube:pass@localhost/roundcubemail';
por nuestra configuracion, o sea el user, el pass el host y la base de datos que vamos a usar
y en un navegador abrimos la pagina web del instalador del webmail
http://ip.o.host.del.webserver/webmail/installer/
en el paso tres tenemos que inicializar la base de datos haciendo click en initialize database
y despues como nos dice el instalador tenemos que eliminar la carpeta installer del servidor
y listo!!!
podemos ingresar al webmail desde http://ip.o.host.del.webserver/webmail/
Bueno en la entrada anterior les puse como configurar el postfix como para que reciba correo de varios dominios.
Ahora les voy a mostrar como hacer para que la autenticacion del imap lo haga por el pass de cada user en la base de datos postfix del mysql.
bueno no es mucho quilombo este…
les paso mi archivo de configuracion para que puedan ver, pero acuerdence que tienen que tener instalado el dovecot para que esto funcione jua jua jua
cat /etc/dovecot/dovecot.conf |grep -v '#'
protocols = imap imaps pop3 pop3s
protocol imap {
listen = *:143
ssl_listen = *:993
}
protocol pop3 {
listen = *:110
ssl_listen = *:995
}
log_path = /var/log/dovecot.log
log_timestamp = "%b %d %H:%M:%S "
ssl_disable = no
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
verbose_ssl = yes
login_dir = /var/run/dovecot/login
login_greeting = Dovecot ready.
login_log_format_elements = user=< %u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s
mail_location = maildir:/home/vmail/%d/%n
mail_access_groups = vmail
mail_debug = no
mail_log_prefix = "%Us(%u): "
mail_log_max_lines_per_sec = 20
verbose_proctitle = yes
first_valid_uid = 2
last_valid_uid = 5000
first_valid_gid = 2
last_valid_gid = 5000
maildir_stat_dirs = yes
protocol imap {
mail_plugin_dir = /usr/lib64/dovecot/modules/imap
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
mail_plugin_dir = /usr/lib64/dovecot/modules/pop3
}
protocol lda {
postmaster_address = postmaster@mydomain.com
hostname = mail.uplinkzero.com
mail_plugin_dir = /usr/lib64/dovecot/modules/lda
sendmail_path = /usr/lib/sendmail
auth_socket_path = /var/run/dovecot/auth-master
}
auth_executable = /usr/lib/dovecot/dovecot-auth
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
auth default {
mechanisms = plain
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
user = root
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0660
user = vmail
group = vmail
}
client {
path = /var/run/dovecot/auth-client
mode = 0660
}
}
}
dict {
}
plugin {
}
despues de colocar este archivo (los certificados les mostre en un post anterior como se creaban)
tienen que crear y modificar el sigte archivo:
# touch /etc/dovecot/dovecot-sql.conf # cat /etc/dovecot/dovecot-sql.conf driver = mysql connect = host=localhost dbname=postfix user=postfix password=postfixadmin # this needs to be the same as what's used in postfixadmin default_pass_scheme = md5-crypt password_query = SELECT password FROM mailbox WHERE username = '%u' user_query = SELECT maildir, 5000 AS uid, 5000 AS gid FROM mailbox WHERE username = '%u'
Modificamos el archivo de autenticacion SASL para que quede de esta manera
# cat /etc/sysconfig/saslauthd ## Path: System/Security/SASL ## Type: list(getpwent,kerberos5,pam,rimap,shadow,ldap) ## Default: pam ## ServiceRestart: saslauthd # # Authentication mechanism to use by saslauthd. # See man 8 saslauthd for available mechanisms. # # SASLAUTHD_AUTHMECH=pam SASLAUTHD_AUTHMECH="rimap -r -O localhost" ## Path: System/Security/SASL ## Type: integer(1:) ## Default: 5 ## ServiceRestart: saslauthd # # Authentication mechanism to use by saslauthd. # See man 8 saslauthd for available mechanisms. # SASLAUTHD_THREADS=5
Creamos un script para crear los Maildir
# touch /usr/bin/maildirmake.dovecot
# cat /usr/bin/maildirmake.dovecot
#!/bin/sh
#
# maildirmake.dovecot -- create maildirs
# Copyright (c) 2003, Jaldhar H. Vyas
# "Do what thou wilt" shall be the whole of the license.
#
dir=$1
if [ -z "$dir" ]; then
echo "Must supply a directory path"
exit 1
fi
if [ "$dir" = "-h" ]; then
echo "usage: $0 directory"
exit 0
fi
umask 077
mkdir -p $dir/{cur,new,tmp} || echo "$!" && exit 1
chmod u+rwxg-a- $dir $dir/{cur,new,tmp} || echo "$!" && exit 1
exit 0
Y por ultimo le hacemos ejecutable y el link
# chmod 777 /usr/bin/maildirmake.dovecot # ln -s /usr/bin/maildirmake.dovecot /usr/bin/maildirmake
No puedo terminar el años sin escribir nada…
Bueno en esta entrada les mostrare como configurar postfix + mysql para hacer de servidor de usuarios virtuales, o sea para hacer de servidor de varios dominios en un solo PC
primero que nada instalar postfix…
hay una manera de opensuse, en una entrada anterior mostre como hacer para que cree todos los certificados y demas yerbas…
despues hay que instalar el paquete postfix-mysql
# yast -i postfix postfix-mysql
Luego crear la base de datos que vamos a usar
# mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1434 Server version: 5.0.51a SUSE MySQL RPM Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database postfix; Query OK, 1 row affected (0.00 sec) mysql> grant ALL on postfix.* to postfix@localhost identified by 'postfixadmin'; Query OK, 0 rows affected (0.01 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> use postfix; Database changed
y pegar el siguiente codigo:
#
# Table structure for table admin
#
CREATE TABLE `admin` (
`username` varchar(255) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`username`)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Admins';
#
# Table structure for table alias
#
CREATE TABLE `alias` (
`address` varchar(255) NOT NULL default '',
`goto` text NOT NULL,
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`address`)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases';
#
# Table structure for table domain
#
CREATE TABLE `domain` (
`domain` varchar(255) NOT NULL default '',
`description` varchar(255) NOT NULL default '',
`aliases` int(10) NOT NULL default '0',
`mailboxes` int(10) NOT NULL default '0',
`maxquota` bigint(20) NOT NULL default '0',
`quota` bigint(20) NOT NULL default '0',
`transport` varchar(255) default NULL,
`backupmx` tinyint(1) NOT NULL default '0',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`domain`)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Domains';
#
# Table structure for table domain_admins
#
CREATE TABLE `domain_admins` (
`username` varchar(255) NOT NULL default '',
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
KEY username (`username`)
) TYPE=MyISAM COMMENT='Postfix Admin - Domain Admins';
#
# Table structure for table log
#
CREATE TABLE `log` (
`timestamp` datetime NOT NULL default '0000-00-00 00:00:00',
`username` varchar(255) NOT NULL default '',
`domain` varchar(255) NOT NULL default '',
`action` varchar(255) NOT NULL default '',
`data` varchar(255) NOT NULL default '',
KEY timestamp (`timestamp`)
) TYPE=MyISAM COMMENT='Postfix Admin - Log';
#
# Table structure for table mailbox
#
CREATE TABLE `mailbox` (
`username` varchar(255) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`name` varchar(255) NOT NULL default '',
`maildir` varchar(255) NOT NULL default '',
`quota` bigint(20) NOT NULL default '0',
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`username`)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Mailboxes';
#
# Vacation stuff ...
#
CREATE TABLE vacation (
email varchar(255) NOT NULL default '',
subject varchar(255) NOT NULL default '',
body text NOT NULL,
cache text NOT NULL,
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(4) NOT NULL default '1',
PRIMARY KEY (email),
KEY email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci TYPE=InnoDB COMMENT='Postfix Admin - Virtual Vacation' ;
# vacation_notification table
CREATE TABLE vacation_notification (
on_vacation varchar(255) NOT NULL,
notified varchar(255) NOT NULL,
notified_at timestamp NOT NULL default now(),
CONSTRAINT vacation_notification_pkey PRIMARY KEY(on_vacation, notified),
FOREIGN KEY (on_vacation) REFERENCES vacation(email) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci TYPE=InnoDB COMMENT='Postfix Admin - Virtual Vacation Notifications';
Quedaria de este modo
mysql> use postfix; Database changed mysql> show tables; +-----------------------+ | Tables_in_postfix | +-----------------------+ | admin | | alias | | domain | | domain_admins | | log | | mailbox | | vacation | | vacation_notification | +-----------------------+ 8 rows in set (0.00 sec)
Nos vamos al directorio de postfix y creamos la carpeta mysql
# cd /etc/postfix/ # mkdir /etc/postfix/mysql/
y creamos estos archivos
# touch mysql_virtual_alias_maps.cf # touch mysql_virtual_domains_maps.cf # touch mysql_virtual_mailbox_maps.cf
Este es el contenido de estos ficheros:
# cat mysql_virtual_alias_maps.cf user = postfix password = postfixadmin hosts = localhost dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = '1' # cat mysql_virtual_domains_maps.cf: user = postfix password = postfixadmin hosts = localhost dbname = postfix query = SELECT domain FROM domain WHERE domain='%u' AND transport='virtual' # cat mysql_virtual_mailbox_maps.cf user = postfix password = postfixadmin hosts = localhost dbname = postfix query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
despues creamos las carpetas donde estaran los mails de los dominios y usuarios virtuales
# mkdir /home/vmail # useradd -u 5000 -d /home/vmail vmail # groupadd -g 5000 vmail # chown vmail.vmail /home/vmail/
Bajamos el postfixadmin
# cd /tmp/ # wget http://ufpr.dl.sourceforge.net/sourceforge/postfixadmin/postfixadmin-2.2.1.1-1.1.openSUSE.noarch.rpm # rpm -Uhv postfixadmin-2.2.1.1-1.1.openSUSE.noarch.rpm
Vemos que tenga permiso de escritura el archivo /srv/www/htdocs/postfixadmin/config.inc.php
Abrimos con un navegador la pagina del postfixadmin (poner la direccion de su server)
http://tu-web-server/postfixadmin/setup.php
Configuramos, y desde ahi podemos crear todos los dominios, aliases y casillas de correos que queramos
aqui les dejo la configuracion de mi main.cf
myhostname = mail.mydomain.com
mydomain = mydomain.com
myorigin = $mydomain
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
default_privs = nobody
inet_interfaces = all
inet_protocols = all
mynetworks_style = host
mynetworks = 127.0.0.0/8
unknown_local_recipient_reject_code = 550
local_recipient_maps = $virtual_mailbox_maps $alias_maps unix:passwd.byname
in_flow_delay = 1s
recipient_delimiter = +
home_mailbox = Maildir/
mail_spool_directory = /var/spool/mail
smtpd_banner = $myhostname ESMTP $mail_name
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = maildrop
html_directory = /usr/share/doc/packages/postfix/html
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/packages/postfix/samples
readme_directory = /usr/share/doc/packages/postfix/README_FILES
biff = no
message_size_limit = 20971520
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_auth_enable = yes
smtpd_sasl2_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_helo_restrictions = permit_mynetworks, warn_if_reject, reject_non_fqdn_hostname, reject_rbl_client zen.spamhaus.org
smtpd_sender_restrictions = reject_unauth_pipelining, reject_unknown_sender_domain, reject_non_fqdn_sender
smtpd_recipient_restrictions = permit_auth_destination, permit_sasl_authenticated, permit_mynetworks, permit_mx_backup, reject_unauth_destination, reject_unlisted_recipient,
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_cert_file = /etc/postfix/ssl/certs/postfixcert.pem
smtpd_tls_key_file = /etc/postfix/ssl/certs/postfixkey.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtpd_helo_required = yes
disable_vrfy_command = yes
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_etrn_restrictions = reject
show_user_unknown_table_name = no
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = dovecot
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql_virtual_mailbox_maps.cf
alias_maps = hash:/etc/aliases
bueno…
anterior mente instalamos el postfix y el dovecot
ahora vamos a filtrar los mails con el spamassassin
primero que nada hay que instalar el perl-spamassassin y el spamassassin
despues hay que editar el archivo /etc/procmailrc, de la siguiente forma:
# cat /etc/procmailrc SENDER=$1 SHIFT=1 :0 hbfw | /usr/bin/spamc :0 | /usr/sbin/sendmail -i -f "$SENDER" -- "$@"
despues hay que editar el archivo /etc/postfix/master.cf
en la parte que tiene esto:
smtp inet n - n - - smtpd
hay que cambiar por esto
smtp inet n - n - - smtpd -o content_filter=procmail:filter
y por ultimo hay que levantar los servicios
# chkconfig --add spamd # rcspamd start

Mas facil que pedar parado.
Porsupuesto primero hay que instalar el paquete dovecot desde el yast o con el zypper
# zypper in dovecot
luego edita el archivo de setting del ssl
# vim /usr/share/doc/packages/dovecot/dovecot-openssl.cnf
en la parte de abajo de [ req_dn ]
y despues ejecutar el script para crear los certificados
# cd /usr/share/doc/packages/dovecot/ # ./mkcert.sh
y por ultimo editar en el dovecot.conf la linea “ssl_disable” a “no”
junto con el postfix de hace rato ya tenemos un super servidor pop3 o imap + postfix todo sobre ssl.
aqui les paso mi archivo de configuracion:
(yo solamente uso imap e imaps, no me copa el pop3)
# cat /etc/dovecot/dovecot.conf|grep -v '#'
protocols = imap imaps
listen = *
syslog_facility = mail
ssl_disable = no
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
ssl_parameters_regenerate = 68
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = dovecot
login_greeting = Dovecot ready.
mail_location = mbox:~/mail/:INBOX=/var/mail/%u
protocol imap {
mail_plugin_dir = /usr/lib/dovecot/modules/imap
}
protocol lda {
postmaster_address = postmaster@dominio.com.py
mail_plugin_dir = /usr/lib/dovecot/modules/lda
}
auth default {
mechanisms = plain
passdb pam {
}
userdb passwd {
}
user = root
}
dict {
}
plugin {
}
Despues para que inicie e inicie automaticamente on boot
# rcdovecot start # chkconfig --add dovecot
oicoite

Hoy estoy caigue!
Y un socio me dijo que por favor le instale su servidor de correo, y ya que el yast hace todo solo y no tengo ganas de joder con la configuracion. Les saque unos cuantos print screen de como hacer que el yast cree sólo todos los certificados y demas yerbas para que corra de forma segura.
Voy a poner unas cuantas explicaciones sobre cada una de las imagenes
Bueno primero que nada instalar el paquete postfix, despues tenemos que abrir el yast e irnos en la parte de configuracion de /etc/sysconfig
Con el cursor nos vamos hasta la parte de Network/Mail
Mail Create config. esto es para que el yast cree todas las configuraciones del mail
Para que escuche en la interfaz externa
Para que el postfix haga de servidor de autenticacion (esto vamos a usar despues con el dovecot)
Para evitar que los usuarios que no estan identificados envien mensajes por nuestro servidor
Este es para exigir la autenticacion antes de enviar
Este es para evitar que los usuarios se autentiquen en modo de texto plano
Esta es la parte en la que se configura los certificados llaves y demas cosas para el ssl y tsl
Si no se pone en esta parte como HOST (o sea se deja como NET), los usuarios de dentro de la lan van a poder hacer relay y enviar correos sin autenticacion, mas para seguridad que se coloca esto
Y por ultimo iniciar y poner para que inicie al arrancar la pc
# rcpostfix start # chkconfig --add postfix