
En esta parte vamos a instalar PostfixAdmin, Dovecot y Postfix. Con PostfixAdmin podremos configurar y administrar nuestro servidor de correo basado en postfix. Con Dovecot tendremos los servicios de IMAP y POP3 en nuestro servidor de correo.
- PostfixAdmin
Después de descargarlo de Github:
tar xfv postfixadmin-3.1.tar.gz mv postfixadmin-3.1 postfixadmin mv postfixadmin /usr/share/ cd /usr/share/postfixadmin mkdir templates_c chmod -R 755 *; chown -R www-data:www-data * chmod -R 777 templates_c mkdir -p /etc/postfixadmin mv /usr/share/postfixadmin/config.inc.php /etc/postfixadmin/ ln -s /etc/postfixadmin/config.inc.php /usr/share/postfixadmin/config.inc.php ln -s /usr/share/postfixadmin /var/www/webmail.inutil.cu/ /etc/init.d/nginx restart
Editar la configuración[config.inc.php]:
Directivas…
$CONF['configured'] = true; $CONF['default_language'] = 'es'; $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'postfixadmin'; $CONF['database_name'] = 'postfix'; $CONF['quota'] = 'YES'; $CONF['quota_multiplier'] = '1048576';
Esta directiva se usa cuando aún no se tiene nombre de dominio así el postfixadmin no chequea el dominio de email del administrador que sea válido. Se usa para pruebas solamente…
$CONF['emailcheck_resolve_domain']='YES'; $CONF['used_quotas'] = 'YES';
Esta directiva se usa desde Dovecot 1.2 o superior, si usted tiene dovecot >=1.1 poner a NO
$CONF['new_quota_table'] = 'YES';
Abrir el navegador e ir a http://ip_del_server/postfixadmin/setup.php
– Rellenar el campo del setup password
– Rellenar los campos del setup con los datos del formulario anterior
– Editar el config.inc.php y setear la variable $CONF[‘setup_password’] con el valor dado en la instalación
– Añadir el email del administrador y listo
En el navegador ir a http://ip_del_server/postfixadmin/
– Loguearnos con la info del administrador del sitio
– Lo primero es ir a «Lista de dominios/Nuevo dominio» y rellenar los datos
– Después ir a «Lista de direcciones virtuales/Añadir buzón» y rellenar los datos
– Añadir cuantos buzones sean necesarios…
– Listo!
- Dovecot
apt install dovecot-pop3d dovecot-imapd dovecot-core dovecot-mysql dovecot-sieve
Dovecot antes nos creaba un certificado autofirmado válido por 10 años[ya NO]. Existe un script en /usr/share/dovecot llamado mkcert.sh que se encarga de esa tarea, pero la primera vez que instalé Dovecot no sabía esto y usé openssl directamente para crearlo:
openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout /etc/dovecot/dovecot.pem -out /etc/dovecot/dovecot.pem
Y después de completar toda la info que nos pide openssl para crear el certificado, lo tendremos disponible en:
/etc/dovecot/dovecot.pem
El cual usaremos para nuestra configuración[es de prueba, no? :D]…
Nota: Dovecot divide en varios archivos la configuración, yo acostumbro a poner todo en un mismo archivo para no perderme después.
Algunos cambios antes de configurar Dovecot
mkdir -p /var/log/dovecot/ cd /var/log/dovecot/ touch dovecot.log dovecot-info.log dovecot-deliver.log dovecot-debug.log
Debido a que Dovecot a cambiado mucho no es posible adaptarle una config anterior[si, me pasó cuando migré de Dovecot 1.1 a 2.1], por lo que debemos hacer lo siguiente:
doveconf -n > /etc/dovecot/dovecot.conf
Doveconf genera una configuración bastante acertada, pero demasiado pobre, por lo que hay que pasarle la mano para que quede a nuestro gusto.
La configuración de Dovecot:
Editamos /etc/dovecot/dovecot.conf
listen = *
protocols = imap pop3
login_log_format = %$: %s
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
deliver_log_format = msgid=%m: %$ : Subject: %s
mail_access_groups = vmail
mail_location = maildir:/home/vmail/%d/%n/Maildir:INDEX=/home/vmail/%d/%n/Maildir
mail_log_prefix = "%Us(%u): "
maildir_stat_dirs = yes
log_path = /var/log/dovecot/dovecot.log
info_log_path = /var/log/dovecot/dovecot-info.log
log_timestamp = "%Y-%m-%d %H:%M:%S "
ssl = required
ssl_protocols = !SSLv2 !SSLv3
# Good bye SSLv3
ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/dovecot.pem
verbose_proctitle = no
verbose_ssl = no
mail_plugins = quota expire mailbox_alias mail_log notify acl
mail_temp_dir = /tmp
disable_plaintext_auth = yes
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
auth_mechanisms = plain login
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
auth_verbose_passwords = plain
# For debbugging purposes only, set to yes
mail_debug = no
debug_log_path = /var/log/dovecot/dovecot-debug.log
login_greeting = Dovecot ready OK+.
first_valid_gid = 2
first_valid_uid = 2
last_valid_gid = 5000
last_valid_uid = 5000
service imap-login {
inet_listener imap {
address = *
port = 143
}
inet_listener imaps {
address = *
port = 993
ssl = yes
}
service_count = 1
}
service imap {
process_limit = 512
vsz_limit = 1 G
}
service pop3-login {
inet_listener pop3 {
address = *
port = 110
}
inet_listener pop3s {
address = *
port = 995
}
service_count = 1
}
service pop3 {
process_limit = 512
vsz_limit = 1 G
}
service dict {
unix_listener dict {
mode = 0600
user = vmail
group = vmail
}
}
namespace {
type = private
separator = /
prefix =
#location defaults to mail_location.
inbox = yes
# Refer to document for more details about alias mailbox:
# http://wiki2.dovecot.org/MailboxSettings
#
# Sent
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Messages" {
auto = no
special_use = \Sent
}
mailbox "Sent Items" {
auto = no
special_use = \Sent
}
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
# Trash
mailbox Trash {
auto = subscribe
special_use = \Trash
}
mailbox "Deleted Messages" {
auto = no
special_use = \Trash
}
# Junk
mailbox Junk {
auto = subscribe
special_use = \Junk
}
mailbox Spam {
auto = no
special_use = \Junk
}
mailbox "Junk E-mail" {
auto = no
special_use = \Junk
}
# Archive
mailbox Archive {
auto = subscribe
special_use = \Archive
}
mailbox Archives {
auto = no
special_use = \Archive
}
}
protocol imap {
mail_max_userip_connections = 10
mail_plugin_dir = /usr/lib/dovecot/modules
mail_plugins = $mail_plugins imap_quota imap_acl
imap_client_workarounds = tb-extra-mailbox-sep
}
protocol pop3 {
mail_max_userip_connections = 10
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
mail_plugin_dir = /usr/lib/dovecot/modules
mail_plugins = $mail_plugins
pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
hostname = correo.nauta.cu
lda_mailbox_autocreate = yes
info_log_path = /var/log/dovecot/dovecot-deliver.log
log_path = /var/log/dovecot/dovecot.log
mail_plugin_dir = /usr/lib/dovecot/modules
mail_plugins = $mail_plugins
postmaster_address = [email protected]
sendmail_path = /usr/lib/sendmail
}
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}
service auth {
unix_listener /var/spool/postfix/private/dovecot-auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-master {
group = vmail
mode = 0660
user = vmail
}
user = root
}
userdb {
args = /etc/dovecot/dovecot-sql.conf
driver = sql
}
dict {
quotadict = mysql:/etc/dovecot/dovecot-quota.conf
}
quota_full_tempfail = yes
plugin {
quota = dict:User quota::proxy::quotadict
quota_rule = *:storage=10M:messages=1000
quota_rule2 = Trash:storage=+10%
# New & WORKS!!!
quota_warning = storage=95%% quota-warning 95 %u
quota_warning2 = storage=90%% quota-warning 90 %u
quota_warning3 = storage=85%% quota-warning 85 %u
quota_grace = 10%%
trash = /etc/dovecot/trash.conf
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
mail_log_fields = uid box msgid size
}
service quota-warning {
executable = script /etc/dovecot/scripts/quota-warning.sh
user = vmail
unix_listener quota-warning {
user = vmail
}
}Conexión a MySQL y obtener de datos
<dovecot-sql.conf>
driver = mysql
connect = host=localhost dbname=db_name user=db_user password=db_user_password
default_pass_scheme = md5-crypt
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active='1'
user_query = SELECT maildir, 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'Obtener la quota
<dovecot-quota.conf>
connect = host=localhost dbname=db_name user=db_user password=db_user_password
map {
pattern = priv/quota/storage
table = quota2
username_field = username
value_field = bytes
}
map {
pattern = priv/quota/messages
table = quota2
username_field = username
value_field = messages
}<trash.conf>
1 Spam 2 Trash
<quota-warning.sh>
#!/bin/bash PERCENT=$1 USER=$2 cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing" From: [email protected] Subject: Advertencia de quota en el servidor Su buzon esta $PERCENT% lleno. Usted deberia borrar algunos mensajes del servidor. ADVERTENCIA: No ignore este mensaje, pues si su buzon alcanza llenarse al 100%, los correos nuevos seran rechazados. EOF
En caso de no necesitar todo esto sólo diríjase a http://wiki2.dovecot.org/QuickConfiguration para configurar Dovecot rápido y sin dolor… No lo recomiendo, estudie un poquito, diga NO a la neuroapatía.
Para probar el certificado en dovecot
openssl s_client -starttls imap -connect imap.inutil.cu:143
- Postfix
apt install postfix postfix-pcre postfix-mysql mlock mailutils postfix-policyd-spf-perl
Lo primero es agregar el usuario postfix al grupo sasl
adduser postfix sasl
Así postfix trabajará con la autenticación SASL.
Debemos agregar a postfix las directivas smtpd_tls_dh1024_param_file y smtpd_tls_dh512_param_file que lo que hacen es añadir ECC con el fin de mejorar la seguridad de nuestro servidor:
smtpd_tls_dh1024_param_file = /etc/postfix/certs/dh_2048.pem.pem smtpd_tls_dh512_param_file = /etc/postfix/certs/dh_1024.pem
Y para generar los certificados:
mkdir /etc/postfix/certs cd /etc/postfix/certs openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -keyout postfix.pem -out postfix.pem openssl dhparam /etc/postfix/certs/dh_2048.pem -2 2048 openssl dhparam/etc/postfix/certs/dh_1024.pem -2 1024
Después de hecho esto, debemos crear el fichero smtpd.conf dentro de la carpeta sasl de Postfix para indicarle el método de autenticación smtp con sasl.
touch /etc/postfix/sasl/smtpd.conf
<smtpd.conf>
pwcheck_method: saslauthd mech_list: PLAIN LOGIN log_level: 7 auxprop_plugin: mysql sql_hostnames: 127.0.0.1 sql_user: postfix sql_passwd: password_usuario_mysql sql_database: postfix sql_select: select password from mailbox where username = '%u'
Y los permisos:
chmod 644 /etc/postfix/sasl/smtpd.conf
Si tenemos alguna duda instalando postfix recomiendo hacer un dpkg-reconfigure postfix y analizar el instalador.Como estamos instalando postfix contra mysql debemos crear los archivos que vinculen a postfix con mysql
mkdir -p /etc/postfix/sql cd /etc/postfix/sql/
Editar mysql_sender_login_maps.cf .Este fichero va a contener la query que chequea y evita la suplantación de identidad
touch mysql_sender_login_maps.cf
<mysql_sender_login_maps.cf>
user = postfix password = postfix_db_password hosts = 127.0.0.1 port = 3306 dbname = postfix query = SELECT mailbox.username FROM mailbox,domain WHERE mailbox.username='%s' AND mailbox.domain='%d' AND mailbox.domain=domain.domain AND mailbox.active=1 AND domain.backupmx=0 AND domain.active=1
Editar mysql_virtual_alias_domainaliases_maps.cf .Este fichero va a contener la query de los alias de dominio
touch mysql_virtual_alias_domainaliases_maps.cf
<mysql_virtual_alias_domainaliases_maps.cf>
user = postfix
password = postfix_db_password
hosts = 127.0.0.1
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' AND alias.address=concat('%u', '@', alias_domain.target_domain) AND alias.active = 1Editar touch mysql_virtual_alias_maps.cf .Este fichero va a contener la query de los alias de correo virtuales
touch mysql_virtual_alias_maps.cf
<mysql_virtual_alias_maps.cf>
user = postfix password = postfix_db_password hosts = 127.0.0.1 dbname = postfix table = alias select_field = goto where_field = address additional_conditions = and active = '1'
Editar mysql_virtual_domains_maps.cf .Este fichero va a contener la query de los dominios de correo virtuales
touch mysql_virtual_domains_maps.cf
<mysql_virtual_domains_maps.cf>
user = postfix password = postfix_db_password hosts = 127.0.0.1 dbname = postfix table = domain select_field = domain where_field = domain additional_conditions = and backupmx = '0' and active = '1'
Editar mysql_virtual_mailbox_domainaliases_maps.cf . Este fichero va a contener la query de los alias de buzón virtuales
touch mysql_virtual_mailbox_domainaliases_maps.cf
<mysql_virtual_mailbox_domainaliases_maps.cf>
user = postfix
password = postfix_db_password
hosts = 127.0.0.1
dbname = postfix
query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' AND mailbox.username=concat('%u', '@', alias_domain.target_domain ) AND mailbox.active = 1Editar mysql_virtual_mailbox_maps.cf . Este fichero va a contener la query de los buzones virtuales
touch mysql_virtual_mailbox_maps.cf
<mysql_virtual_mailbox_maps.cf>
user = postfix
password = postfix_db_password
hosts = 127.0.0.1
dbname = postfix
query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' AND mailbox.username=concat('%u', '@', alias_domain.target_domain ) AND mailbox.active = 1Ya esta casi listo nuestro server de correo, en nuestro siguiente y último tutorial terminaremos de configurar el postfix para tener un servidor de correo totalmente funcional.
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0
Esto me recuerda mis tiempos de «Postfixadmin» los años 2009-2014 muy buen MTA se los recomiendo muy rapido sencillo y eficaz. Salu2
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0
Donde dice:
openssl dhparam /etc/postfix/certs/dh_2048.pem -2 2048
openssl dhparam/etc/postfix/certs/dh_1024.pem -2 1024
Es:
openssl dhparam -out /etc/postfix/certs/dh_2048.pem -2 2048
openssl dhparam -out /etc/postfix/certs/dh_1024.pem -2 1024
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
https://www.sysadminsdecuba.com/2018/01/servidor-de-correo-con-postfix-mariadb-y-postfixadmin-en-debian9-4ta-parte/
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
esta perfecto, pero necesito la 4ta parte
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0
Buenas no encuentro el post con la cuarta parte y final. me gustaria saber si lo pondran.
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Por favor publica el último tutorial sobre esto
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Por favor donde se agregan las directivas al postfix
smtpd_tls_dh1024_param_file = /etc/postfix/certs/dh_1024.pem
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
En el main.cf
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Quedamos a la espera del gran final.