Como lo prometido es deuda, aquí van mis configs, con aclaraciones. Esto
no es un tutorial para principiantes, es una configuración de ejemplo
para que los que ya conocen Postfix mejoren o ajusten las suyas.

Detalles de la configuración:

1-. Server de un nodo, con usuarios locales y varios subdominios
2-. Recibe todo el correo entrante de una cuenta multipop, con
fetchmail. El correo saliente se entrega al server del ISP, de manera
que es una config tipo smarthost
3-. Los usuarios son del sistema, y se crean con un script que les pone
como shell /bin/false, entre otras cuestiones. Todos los usuarios
*tienen que autenticarse*, al igual que las pasarelas con SMTP AUTH. El
TLS está soportado, pero es opcional.
4-. Todos los usuarios tienen, por defecto, salida nacional. Los
usuarios que se pongan en _usuarios_tx pueden enviar internacional, y
los que se pongan en _usuarios_rx pueden recibir internacional. Todos
los usuarios de los subdominios son nacionales, a menos que se incluyan
en estos dos listados.
5-. Deben existir, aunque estén vacios, los ficheros siguientes:

/etc/postfix/_copy_recipient_maps 
/etc/postfix/_copy_sender_maps
/etc/postfix/_usuarios_rx
/etc/postfix/_usuarios_tx
/etc/postfix/_virtual_domains
/etc/postfix/_sender_login.pcre

El _ delante es una marca para saber que ahí se debe puede meter la
mano.

6-. RECUERDEN hacer postmap nombredelfichero a todo lo que empiece con
_, excepto _sender_login.pcre (aunque no pasa nada si lo hacen).

Solamente pido que los comentarios y vulnerabilidades que se encuentren
a esta configuración sean públicos, para mejorarla y tener un ejemplo
para guiarnos todos.

/////////////////// /etc/postfix/main.cf ///////////////////

###########################################################################
#
# BANNER DE BIENVENIDA  Y CONFIGURACIONES GENERALES
#
###########################################################################

smtpd_banner = $myhostname ESMTP $mail_name MIENTIDAD (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

readme_directory = no

# Debug
debug_peer_level = 4
debug_peer_list = $mynetworks

###########################################################################
#
# PARAMETROS DE SEGURIDAD GENERAL Y TLS
#
###########################################################################

smtp_use_tls = yes
#smtpd_tls_auth_only = yes
smtp_tls_note_starttls_offer = yes
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/ssl/post.pem
smtpd_tls_cert_file = /etc/ssl/post.pem
smtpd_tls_CAfile = /etc/ssl/post.pem
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
tls_random_source = dev:/dev/urandom


###########################################################################
#
# PARAMETROS DEL BUZON, LOS MENSAJES Y LA COLA
#
###########################################################################

# Limite del tamanho del mensaje
message_size_limit = 2097152
# Limite del tamanno del buzon
mailbox_size_limit = 20971520
# Cantidad maxima de destinatarios para un mensaje
smtpd_recipient_limit = 50
# Tiempo maximo de vida en la cola
maximal_queue_lifetime = 3d
# Enviar alertas sobre correo demorado
delay_warning_time = 4h
smtpd_error_sleep_time = 1s
# Limite de entrega simultanea a un mismo usuario local
local_destination_concurrency_limit = 5
bounce_queue_lifetime = 3d

###########################################################################
#
# CONFIGURACION DE RED
#
###########################################################################

# Interfaces de red donde escuchar
inet_interfaces = all
# Protocolo ipv4 o ipv6
inet_protocols = ipv4
mynetworks_style = host
mynetworks = 127.0.0.0/8

###########################################################################
#
# CONFIGURACIONES DE DOMINIO
#
###########################################################################

myhostname = mail.midominio.cu
mydomain = midominio.cu
myorigin = /etc/mailname
mydestination = midominio.cu, mail.midominio.cu, localhost.midominio.cu,
localhost
masquerade_domain = midominio.cu
disable_dns_lookup = yes

###########################################################################
#
# CONFIGURACIONES DE ALIAS
#
###########################################################################

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

###########################################################################
#
# CONFIGURACION DE RELAY (SMARTHOST)
#
###########################################################################

relayhost = [IP DEL SERVER DE MI ISP]

###########################################################################
#
# CONFIGURACION DE SMTP
#
###########################################################################

smtp_mx_address_limit = 0
smtp_connect_timeout = 30
smtp_helo_timeout = 60s
smtp_rcpt_timeout = 240s
smtp_quit_timeout = 240s
smtp_rset_timeout = 20s
smtp_skip_4xx_greeting = yes
smtp_skip_5xx_greeting = yes

###########################################################################
#
# CONFIGURACION DE SASL (AUTENTICACION SMTP)
#
###########################################################################

smtp_sasl_auth_enable = no 
smtpd_helo_required = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
disable_vrfy_command = yes

# Demorar el rechazo de los clientes no autenticados hasta el RCPT TO
smtpd_delay_reject  = yes

###########################################################################
#
# CONFIGURACION DEL MDA
#
###########################################################################

mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +

###########################################################################
#
# DOMINIOS VIRTUALES
#
###########################################################################

virtual_alias_domains =  subdominio1.midominio.cu
subdominio2.subdominio.cu
virtual_alias_maps = hash:/etc/postfix/_virtual_domains

###########################################################################
#
# EVITAR SUPLANTACION DE IDENTIDAD AL ENVIAR
#
###########################################################################

smtpd_sender_login_maps = pcre:/etc/postfix/_sender_login.pcre

###########################################################################
#
# COPIAS DE CORREOS RECIBIDOS Y ENVIADOS
#
###########################################################################

sender_bcc_maps = hash:/etc/postfix/_copy_sender_maps
recipient_bcc_maps = hash:/etc/postfix/_copy_recipient_maps

###########################################################################
#
# FILTROS Y REGLAS
#
###########################################################################

# Filtrado de adjuntos:
mime_header_checks = pcre:/etc/postfix/_filtro_adjuntos

smtpd_restriction_classes  = internac_tx
                             internac_rx

internac_tx = check_recipient_access
regexp:/etc/postfix/_filtro_internac
              permit_sasl_authenticated
              reject

internac_rx = check_sender_access regexp:/etc/postfix/_filtro_internac
              permit

smtpd_sender_restrictions =     check_recipient_access
hash:/etc/postfix/_usuarios_rx
                                check_sender_access 
regexp:/etc/postfix/_filtro_nac
                                permit_sasl_authenticated
                                reject

smtpd_recipient_restrictions =  reject_sender_login_mismatch
                                check_sender_access 
hash:/etc/postfix/_usuarios_tx
                                check_recipient_access 
regexp:/etc/postfix/_filtro_nac
                                permit_sasl_authenticated
                                reject

/////////////////// FIN main.cf ///////////////////

/////////////////// /etc/postfix/sasl/smtpd.conf ///////////////

pwcheck_method: saslauthd
mech_list: plain login

/////////////////// FIN smtpd.conf ///////////////

/////////////////// /etc/postfix/sasl/_filtro_adjuntos ///////////////

/filename=\".*\.(rar|rar\?=|tar.gz|tar.gz\?=|bz2|bz2\?=|kgb|kgb\?=|zip|
zip\?=|7z|7z\?=)\"$/ OK
/filename=.*\.(rar|rar\?=|tar.gz|tar.gz\?=|bz2|bz2\?=|kgb|kgb\?=|zip|zip
\?=|7z|7z\?=)$/ OK
/filename=\".*\.(xls|xls\?=|rtf|rtf\?|doc|docx|doc\?=|docx\?=|mdb|mdb
\?=|pdf|pdf\?=|rpm|rpm\?=|deb|deb\?=|odt|odt\?=|ods|ods\?=|asc|dat\?=|
dat|eml\?=|eml)\"$/ OK
/filename=.*\.(xls|xls\?=|rtf|rtf\?|doc|doc\?=|docx|docx\?=|mdb|mdb\?=|
pdf|pdf\?=|rpm|rpm\?=|deb|deb\?=|odt|odt\?=|ods|ods\?=|asc|dat\?=|dat|
eml\?=|eml)$/ OK
/filename=.*\.(txt|txt\?=|snp|snp
\?=|[0-9][0-9][0-9]|[0-9][0-9][0-9]\?=)$/ OK
/filename=\".*\.(txt|txt\?=|snp|snp
\?=|[0-9][0-9][0-9]|[0-9][0-9][0-9]\?=)\"$/ OK
/filename=.*\.*/ REJECT Tipo de adjunto no permitido, por favor comprima
el archivo antes de enviarlo

/////////////////// FIN _filtro_adjuntos ///////////////

/////////////////// /etc/postfix/sasl/_filtro_internac ///////////////
/^\@/                           REJECT 550 El formato de la direccion no
es valido.
/[!%\@].*\@/                    REJECT 550 Este servidor desaprueba las
sintaxis raras.
/////////////////// FIN _filtro_internac ///////////////

/////////////////// /etc/postfix/sasl/_filtro_nac ///////////////
/\@*\.cu$/                       RELAY
/^\@/                           REJECT 550 El formato de la direccion no
es valido.
/[!%\@].*\@/                    REJECT 550 Este servidor desaprueba las
sintaxis raras.
/\@*/                           REJECT Esta cuenta no puede enviar ni
recibir correo internacional.
/////////////////// _filtro_nac ///////////////

/////////////////// /etc/postfix/_sender_login.pcre ///////////////
/^(.*)@midominio\.cu$/    $1
/^(.*)@subdominio1\.midominio\.cu$/ subdominio1
/^(.*)@subdominio2\.midominio\.cu$/ subdominio2
/////////////////// _sender_login.pcre ///////////////

/////////////////// /etc/postfix/_usuarios_rx ///////////////
usuarioconentradainternacion...@midominio.cu internac_rx
usuarioconentradainternacion...@midominio.cu internac_rx
/////////////////// FIN _usuarios_rx ///////////////

/////////////////// /etc/postfix/_usuarios_tx ///////////////
usuarioconsalidainternacion...@midominio.cu internac_tx
usuarioconsalidainternacion...@midominio.cu internac_tx
/////////////////// FIN _usuarios_tx ///////////////

/////////////////// /etc/postfix/_virtual_domains ///////////////
@subdominio1.midominio.cu               subdominio1
@subdominio2.midominio.cu               subdominio2
/////////////////// FIN _virtual_domains ///////////////

Mi recomendación es que sigan el tutorial de SASL de la wiki, y luego
apliquen todo lo demás, una funcionalidad a la vez hasta que lo tengan
todo funcionando. TLS es especialmente enredado para configurar, pero
para eso recomiendo dejarlo para el final, y seguir cualquiera de los
tutoriales para este tema que hay en Internet.

Si alguien necesita los cambios que hay que hacer en los postixs
"hijos", se los envío aparte.

Saludos fraternales,

nat



______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a