Bug 4261 - Creacion de nuevo LDAP y Mailserver
Summary: Creacion de nuevo LDAP y Mailserver
Status: RESOLVED FIXED
Alias: None
Product: Solo UInf [ uso exclusivo de UInf ]
Classification: Unclassified
Component: General (show other bugs)
Version: 1.0
Hardware: Servidores Correo
: Normal normal
Assignee: Gonzalo Cabrera
URL:
Depends on:
Blocks:
 
Reported: 2020-01-08 12:23 -03 by Gonzalo Cabrera
Modified: 2021-04-21 13:53 -03 (History)
1 user (show)

See Also:
Local: General
Dep/Cat: ---
Dep/Cat: ---
Dep/Cat: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gonzalo Cabrera 2020-01-08 12:23:12 -03
Se va crear un nuevo mailserver separado del Ldap y con el debian mas actualizado que el actual que no tiene mas soporte en sus repositorios
Comment 1 Gonzalo Cabrera 2020-01-08 12:24:40 -03
Se instala postfix y dovecot, se configuran los mismo queda funcionando el mail nuevo. Falta configurarle la conexion con ldap y que mande los mail a una carpeta en FreeNas
Comment 2 Gonzalo Cabrera 2020-01-21 07:35:45 -03
Se instala un nuevo ldap y se agrega el schema de postfix
se configura la conexion con el nuevo mailserver
esta funcionando a nivel basico falta implementaciones de filtros y de seguridad


Se siguieron los siguientes tutoriales con las respectivas modificaciones 
http://acidx.net/wordpress/2014/06/installing-a-mailserver-with-postfix-dovecot-sasl-ldap-roundcube/

https://www.server-world.info/en/note?os=Debian_10&p=httpd&f=14

http://acidx.net/wordpress/2014/04/basic-openldap-installation-configuration/
Comment 3 Gonzalo Cabrera 2020-01-22 10:51:15 -03
Se configura tls/ssl en postfix y dovecot
Comment 4 Gonzalo Cabrera 2020-01-23 09:41:08 -03
Se configura plugin de Roundcube para cambiar password contra ldap con las siguientes opciones(realizando los cambios pertinentes

<?php
$config['password_driver'] = 'ldap_simple';
$config['password_confirm_current'] = true;
$config['password_minimum_length'] = 4;
$config['password_require_nonalpha'] = false;
$config['password_log'] = false;
$config['password_login_exceptions'] = null;
$config['password_hosts'] = null;
$config['password_force_save'] = true;
$config['password_force_new_user'] = false;
$config['password_ldap_host'] = 'IP DE LDAP';
$config['password_ldap_port'] = '389';
$config['password_ldap_starttls'] = false;
$config['password_ldap_version'] = '3';
$config['password_ldap_basedn'] = 'DOMINIO(dc=ejemplo,dc=com)';
$config['password_ldap_method'] = 'user';
$config['password_ldap_adminDN'] = null;
$config['password_ldap_adminPW'] = null;
$config['password_ldap_userDN_mask'] = 'uniqueIdentifier=%login,OU USUARIOS,DOMINIO(dc=ejemplo,dc=com)';
$config['password_ldap_searchDN'] = 'cn=roundcube,OU DEL USUARIO ROUNDCUBE,DOMINIO(dc=ejemplo,dc=com)';
$config['password_ldap_searchPW'] = 'PASSWORD DEL USER ROUNDCUBE';
$config['password_ldap_search_base'] = 'DN DE DONDE BUSCAR LOS USUARIOS(ou=usuarios,dc=ejemplo,dc=com)';
$config['password_ldap_search_filter'] = '(uniqueIdentifier=%login)';
$config['password_ldap_encodage'] = 'crypt';
$config['password_ldap_pwattr'] = 'userPassword';
$config['password_ldap_force_replace'] = true;
$config['password_ldap_lchattr'] = '';
$config['password_ldap_samba_pwattr'] = '';
$config['password_ldap_samba_lchattr'] = '';
?>
Comment 5 Gonzalo Cabrera 2020-02-04 09:55:51 -03
Se instala lo necesario para spf y dkim


apt-get install opendkim opendkim-tools postfix-policyd-spf-python postfix-pcre

Se configura SPF

  #vim /etc/postfix/master.cf

se agrega al final del archivo
  
policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/bin/policyd-spf


vim /etc/postfix/main.cf

se agrega depues de reject_unauth_destination
la siguiente linea
        check_policy_service unix:private/policyd-spf,

Se agrega al final del archivo
        policyd-spf_time_limit = 3600
Comment 6 Gonzalo Cabrera 2020-02-06 09:22:49 -03
-------------------CONFIGURACION DKIM--------------

Se edita el archivo de configuracion de opendkim para que quede con los siguientes parametros

Canonicalization relaxed/relaxed
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyFile /etc/opendkim/keys/ARCHIVO-LLAVE.private
KeyTable refile:/etc/opendkim/KeyTable
LogWhy yes
MinimumKeyBits 1024
Mode sv
OversignHeaders From
PidFile /var/run/opendkim/opendkim.pid
Selector default
SendReports yes
SignatureAlgorithm rsa-sha256
SigningTable refile:/etc/opendkim/SigningTable
Socket inet:8891@127.0.0.1
SoftwareHeader yes
SyslogSuccess yes
Syslog yes
Umask 022
UserID opendkim:opendkim 

Se crea la carpeta opendkim y luego la carpeta keys
    mkdir /etc/opendkim
    mkdir /etc/opendkim/keys

Se edita/crea el archivo TrustedHosts agregando lo siguiente

127.0.0.1
::1
IP DEL SERVER
HOSTNAME
DOMINIO


Se edita/crea el archivo KeyTable agregando lo siguiente

Nombre-en-RegistroDNS.DOMINIO DOMINIO:Selector-de-key:Ubicacion de LLAVE.PRIVATE

Se edita/crea el archivo SigningTable agregando lo siguiente

*@DOMINIO Nombre-en-RegistroDNS.DOMINIO

Se edita /etc/default/opendkim comentamos la actual linea SOCKET... y agregamos la siguiente: SOCKET="inet:8891@127.0.0.1"

se edita /etc/postfix/main.cf comentando las lineas mydestination, smtpd_milters(si existe), non_smtpd_milters(si existe)

AGREGAMOS AL FINAL DEL MAIN.CF

milter_default_action = accept
milter_protocol = 6
smtpd_milters = , inet:127.0.0.1:8891, inet:127.0.0.1:12768
non_smtpd_milters = , inet:127.0.0.1:12768, inet:127.0.0.1:8891
mydestination = $myhostname, $mydomain, mail.$mydomain, localhost.$mydomain, localhost, localhost.localdomain

REINICIAMOS SERVICIOS
  systemctl restart opendkim
  systemctl restart postfix

Se envia un correo a una casilla gmail y en los cabezales devuelve

DKIM:	'PASS' con el dominio fenf.edu.uy
Comment 7 Gonzalo Cabrera 2020-02-17 08:20:02 -03
Se configura dmarc siguiendo el siguiente tutorial

https://www.linuxbabe.com/mail-server/opendmarc-postfix-ubuntu
Comment 8 Gonzalo Cabrera 2020-02-18 11:39:59 -03
Se configura amavis usando el sig tutorial
https://www.server-world.info/en/note?os=Debian_10&p=mail&f=8
Comment 10 Gonzalo Cabrera 2020-02-27 11:30:51 -03
Se configuran los mailbox en share nfs de naso


----------------EN NASO-------------------
se crea un dataset nombre Mails
se crea un share nfs apuntando a /mnt/fenf/Mails
------------------------------------------------


-----------------EN MAILSERVER------------
Se instala nfs-common
       apt-get instal nfs common

Se agregan las siguientes linas en 10-mail.conf de dovecot
       mmap_disable = no
       dotlock_use_excl = yes
       mail_nfs_storage = yes
       mail_nfs_index = no

Se agrega la siguiente linea en fstab
       192.168.10.2:/mnt/fenf/Mails	/srv/vmail	nfs	defaults	0	0

--------------------------------------------

Se prueba y queda funcionando
Comment 11 Gonzalo Cabrera 2020-03-10 09:57:35 -03
Se configuran el plugin de marcar como spam que ya viene incluido en roundcube y es solo agregarlo al config.inc.php

Se configura plugin de filtros el cual se descarga de https://plugins.roundcube.net/packages/roundcube/filters#dev-master y se copia la carpeta en /var/www/rouncube/plugins/

Se edita el config.inc.php de roundcube agregando el plugin filters en la linea 55
Comment 12 Gonzalo Cabrera 2020-04-02 13:13:40 -03
Se instala Mailman 
siguiendo el siguiente tutorial

https://www.ochobitshacenunbyte.com/2015/10/01/listas-distribucion-mailman-gnu-linux/

Falta configurar bien los alias en apache, migrar y probar que funcione
Comment 13 Gonzalo Cabrera 2020-04-14 10:22:12 -03
Se migran los datos de mailman del mail-server viejo al mail-server nuevo

------EN MAIL-SERVER VIEJO----------
se va a la carpeta /var/lib/mailman
   
     cd /var/lib/mailman 

Se crea una tar de las siguientes carpetas

     tar -cpvW -f /root/mmdata ./data

     tar -cpvW -f /root/mmarchives ./archives

     tar -cpvW -f /root/mmlists ./lists

se copian al mailserver nuevo

     scp /root/mm* root@(IP MAILSERVER-NUEVO):/var/lib/mailman

-----------------------------------

----EN MAIL-SERVER NUEVO------------
se va a la carpeta /var/lib/mailman
   
     cd /var/lib/mailman 


Se extraen los tar creados anteriormente

   tar -xvf mmdata
   
   tar -xvf mmarchives

   tar -xvf mmlists

Se repara la url de la lista
  
    withlist -l -r fix_url NOMBRE-DE-LA-LISTA
Comment 14 Gonzalo Cabrera 2020-04-15 09:21:28 -03
Se amplia el disco del newmailserver ya que se lleno. 
Se levanta la VM con un ubuntu 18 live
se usa gparted para expandir sda2 y luego sda5
se rebootea
una vez dentro de la vm se expande el lvm de root
#lvextend -L +20G /dev/mapper/NOMBRE_VG--NOMBRE_LVM
#resize2fs /dev/mapper/NOMBRE_VG--NOMBRE_LVM
Comment 15 Gonzalo Cabrera 2020-05-04 15:58:38 -03
Se configura el envio de correos atraves de mailman

editamos main.cf de postfix y agregamos la siguiente linea

 transport_maps= hash:/etc/postfix/transport

se edita /etc/postfix/transport y se agregan lineas con el siguiente formato

listacorreo@dominio               mailman
dominio                     dovecot

listacorreo@dominio               mailman se repite esta linea en el archivo por cada lista de correo que se quiera

luego se ejecuta los comandos

postmap /etc/postfix/transport

postfix reload
Comment 16 Gonzalo Cabrera 2020-05-15 09:38:05 -03
Se configura en roundcube el address book de ldap copiando y re-configurando segun sea necesario desde el viejo mail server
Comment 17 Gonzalo Cabrera 2020-05-26 11:30:21 -03
Se configura que se muestre la quota usada en roundcube 

Dovecot

Se edita 90-plugin.conf agregando configuracion del viejo mailserver y adaptandola al nuevo 

vim /etc/dovecot/conf.d/90-plugin.conf
plugin {
    quota_warning = storage=85%% /usr/local/bin/dovecot-quota-warning.sh 85
    quota_warning2 = storage=90%% /usr/local/bin/dovecot-quota-warning.sh 90
    quota_warning3 = storage=95%% /usr/local/bin/dovecot-quota-warning.sh 95
}
plugin {
    quota = dict:user::file:%h/mdbox/dovecot-quota
    quota_rule = *:storage=0
}
plugin {
    expire = Trash 7 Trash/* 7 Junk 30
    expire_dict = proxy::expire
    auth_socket_path = /var/run/dovecot/auth-master
}
plugin {
    sieve = /var/vmail/sieve/%Ld/%Ln/dovecot.sieve
}
Se edita 20-imap.conf agregando la siguiente linea

 mail_plugins = quota imap_quota autocreate

se edita 20-pop3.con agregando
 mail_plugins = quota

Se edita el config.inc.php de roundcube 
agregando la siguiente linea
$config['quota_zera_as_unlimited'] = true,
Comment 18 Gonzalo Cabrera 2020-06-24 15:41:38 -03
se migra la base de datos del rouncube viejo al nuevo servidor

     mysqldump -u root -p --databases NOMBRE-BASE DE DATOS > ARCHIVO BACKUP.sql

Se copia el archivo al servidor nuevo

     scp ARCHIVO-BACKUP.sql root@IP-NEWMailserver:

Se levanta la base de datos vieja 

     mysql -u root -p < ARCHIVO-BACKUP.sql

Se dan permisos sobre la base de datos 

     grant all privileges on NOMBRE-BD.* to USUARIO@'localhost' identified by PASSWORD';

     flush privileges;

Se edita el archivo config.inc.php de roundcube cambiando el nombre de la BD en la linea $config[db_dsnw]

se cambia 2 columnas de la base de datos

 update users set username = substring(username,1,length(username)-12) where mail_host = 'fqdn del server';


update users set mail_host = 'fqdn del server' where mail_host = '127.0.0.1';
Comment 19 Gonzalo Cabrera 2020-10-01 11:48:03 -03
Se configura plugin de filtros managesieve en roundcube
-------------------INSTALACION-------------------------
Se instalan los siguientes paquetes
    apt-get install dovecot-sieve dovecot-managesieved 
-------------------------------------------------------

-------------CONFIGURACION DE SIEVE------------------

SE EDITA EL ARCHIVO 90-sieve.conf

 vim /etc/dovecot/conf.d/90-sieve.conf 
       plugin {
           sieve = donde van los scripts de usuarios
           sieve_global_path = script global
           sieve_dir = directorio de los scripts

           recipient_delimiter = +
       }

SE EDITA EL ARCHIVO 20-managesieve.cons

	service managesieve-login {
	  inet_listener sieve {
	    port = 4190
	  }
	  service_count = 1
	  process_min_avail = 0
	  vsz_limit = 64M
	}
	
	service managesieve {
	   process_limit = 1024
	}

	protocol sieve {
	  managesieve_max_line_length = 65536
	  mail_max_userip_connections = 10
	  mail_plugins =
	  managesieve_logout_format = bytes=%i/%o
	  managesieve_implementation_string = Dovecot Pigeonhole
	  managesieve_sieve_capability =
	  managesieve_notify_capability =
	  managesieve_max_compile_errors = 5
	}

SE EDITA EL ARCHIVO 15-lda.conf

	se agrega en la seccion protocols la siguiente linea
	mail_plugins = $mail_plugins quota sieve autocreate
----------------FIN CONFIG SIEVE---------------------------

------------------CONFIG DEL PLUGIN-----------------------

1 - Se agrega el plugin managesieve en la linea  $config['plugins']  del archivo de configuracion de roundcube

2 - en la carpeta del plugin se copia el contenido de l archivo dist al archivo de configuracion
               cp config.inc.php.dist config.inc.php

3 - se cambia en el archivo de configuracion del plugin las siguientes lineas
             $config['managesieve_default'] = 'directorio del script default';
	     $config['managesieve_script_name'] = 'nombre del script cuando no hay script de usuario'

------------------FIN CONFIG PLUGIN------------------------------------
Comment 20 Gonzalo Cabrera 2020-10-05 10:04:02 -03
Se configura los alias de apache quedando de la siguiente manera

Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/
ScriptAlias /admin/ /usr/lib/cgi-bin/mailman/admin/
ScriptAlias /admindb/ /usr/lib/cgi-bin/mailman/admindb/
ScriptAlias /confirm/ /usr/lib/cgi-bin/mailman/confirm/
ScriptAlias /create/ /usr/lib/cgi-bin/mailman/create/
ScriptAlias /edithtml/ /usr/lib/cgi-bin/mailman/edithtml/
ScriptAlias /listinfo/ /usr/lib/cgi-bin/mailman/listinfo/
ScriptAlias /options/ /usr/lib/cgi-bin/mailman/options/
ScriptAlias /private/ /usr/lib/cgi-bin/mailman/private/
ScriptAlias /rmlist/ /usr/lib/cgi-bin/mailman/rmlist/
ScriptAlias /roster/ /usr/lib/cgi-bin/mailman/roster/
ScriptAlias /subscribe/ /usr/lib/cgi-bin/mailman/subscribe/
ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/

los mismos van ubicados previo a la seccion <Directory /ubicacion/de/script/> en la config de la pagina
Comment 21 Gonzalo Cabrera 2020-10-27 12:50:09 -03
Se configura ssl en apache

          a2enmod ssl

          a2ensite default-ssl.conf

se editan las opciones corespondientes de default-ssl.conf para que quede con los certificados de fenf
Comment 22 Gonzalo Cabrera 2021-01-29 12:43:07 -03
Se pone en producción el correo
Comment 23 Gonzalo Cabrera 2021-01-29 12:54:01 -03
Le faltaba memoria y se trancaba el clamav se expande memoria a 4 GB
Comment 24 Gonzalo Cabrera 2021-01-29 12:57:52 -03
se amplia tambien swap a 4GB
Comment 26 Gonzalo Cabrera 2021-01-30 15:22:26 -03
se agrega al whitelist de spf la red de fenf
Comment 27 Gonzalo Cabrera 2021-02-03 11:20:37 -03
se edita 10-master de dovecot para avticar pop3s e imaps
Comment 29 Gonzalo Cabrera 2021-02-05 10:36:11 -03
se setea identities access level 4 en roundcube
  $config['identities_level'] = 4;
Comment 38 Gonzalo Cabrera 2021-03-10 10:56:19 -03
Se trabaja en conjunto con Guillermo para arreglar que el mail mande solo desde authenticados y owner

Se edita main.cf de postfix agregando en smtpd_sender_restrictions los siguientes parametros reject_sender_login_mismatch y permit_sasl_authenticated 
se agrega la linea 
smtpd_sender_login_maps = proxy:ldap:/etc/postfix/sender_login_maps.cf, proxy:ldap:/etc/postfix/ldap_virtual_aliases.cf, proxy:ldap:/etc/postfix/sender_bug.cf

El 1er archivo verifica los owner de correo
El 2do archivo verifica los owner de identidades
El 3er archivo verifica el no-reply de bugzilla
Comment 39 Gonzalo Cabrera 2021-03-10 11:06:17 -03
Se edita  policyd-spf.conf para que filtre desde Softfail en adelante
HELO_reject = Softfail
Comment 45 Rafael Alvarez 2021-04-21 13:53:40 -03
Los servidores fueron migrados y están en funcionamiento