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
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
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/
Se configura tls/ssl en postfix y dovecot
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'] = ''; ?>
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
-------------------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
Se configura dmarc siguiendo el siguiente tutorial https://www.linuxbabe.com/mail-server/opendmarc-postfix-ubuntu
Se configura amavis usando el sig tutorial https://www.server-world.info/en/note?os=Debian_10&p=mail&f=8
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
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
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
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
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
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
Se configura en roundcube el address book de ldap copiando y re-configurando segun sea necesario desde el viejo mail server
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,
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';
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------------------------------------
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
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
Se pone en producción el correo
Le faltaba memoria y se trancaba el clamav se expande memoria a 4 GB
se amplia tambien swap a 4GB
se agrega al whitelist de spf la red de fenf
se edita 10-master de dovecot para avticar pop3s e imaps
se setea identities access level 4 en roundcube $config['identities_level'] = 4;
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
Se edita policyd-spf.conf para que filtre desde Softfail en adelante HELO_reject = Softfail
Los servidores fueron migrados y están en funcionamiento