Mailinglist Archive: opensuse-es (718 mails)

< Previous Next >
Postfix, repuestas a algunas preguntas.
  • From: Guillermo Ballester Valor <gbv@xxxxxxxxxxxx>
  • Date: Wed, 9 Oct 2002 18:35:14 +0200
  • Message-id: <200210091835.14759.gbv@xxxxxxxxxxxx>
Hola,

He mandado antes este mail, pero creo que me he liado con las redireciones y
no ha llegado. Discupla si lo recibes dos veces.

Como la respuesta a tus preguntas es larga y quizás interese a algunos
usuarios, lo he mandado a la lista de Suse, espero que no te moleste.

On Tuesday 08 October 2002 21:48, you wrote:
> ---------- Forwarded Message ----------
>
> Subject: manual de postfix
> Date: Tue, 8 Oct 2002 23:14:40 +0200
> From: "Dionisio Ruiz de Zarate" <dionisio@xxxxxxxxxxxxx>
> To: <gbv@xxxxxxxxxxxx>
>
> Hola he leido tu manual en susehispano y me parece interesante, muy
> interesante.
>
> (snip)
>
> bien te comento:
> 1.- el virtusertable (correspondencia usuario-cuenta de correo) de sendmail
> a que corresponde en postfix? y sigue la misma estructura de fichero, es
> decir cuenta@xxxxxxxxxx nombredeusuario ?? como distingue postfix entre
> usuario1@xxxxxxxxxxxx y usuario1@xxxxxxxxxxxxx esto en el sendmail se hacia
> con el virtusertable.

Como podrás ver, postfix es muuucho más flexible y potente que sendmail.
Vamos por partes. Efectivamente hay en postfix un fichero que realiza las
mismas operaciones que el equivalente en sendmail. Dicho fichero es
'/etc/postfix/virtual'. En general, hay dos estilos a la hora de escribir
'virtual'. La idea en Postfix de ese fichero es _renombrar_ direcciones para
destinos y dominios locales y no_locales. La redireccion solo se aplica al
sobre (envelope) del destinatario, no cambia las cabeceras del mensaje.
Ademas, la redirección puede ser recursiva :).

Los estilos posibles son:

ESTILO POSTFIX:

Los alias, usuarios locales y listas de correos no son visibles en un dominio
virtual (mas abajo explico qué es eso). Para especificar ese estilo, tenemos
que incluir en '/etc/postfix/virtual' líneas como las siguientes:

mi_dominio.virtual Y aqui ponemos cualquier cosa, no importa.
usuario1@xxxxxxxxxxxxxxxxxx direccion1
usuario2@xxxxxxxxxxxxxxxxxx direccion2, direccion3, ...
usuario3 direccion4, direccion5, ...
@mi_dominio.virtual direccion6, ....

En general, la forma de las líneas es 'patron resultado' cuando uno de los
patrones se adapta a una dirección de correo, entonces ésta es sustituida por
el resultado.

La primera linea es obligatoria para especificar el estilo postfix, las otras
son ejemplos. Nótese que podemos redirigir a una o más direcciones.

La segunda línea redirigira todo correo cuyo destinatario es
<usuario1@xxxxxxxxxxxxxxxxxx> a direccion1.

La tercera línea ilustra el hecho de que se puede redirigir a más de una
dirección.

En la cuarta línea, usuario3@xxxxxxxxxxxxx es redirigida a direccion4,
direccion5 ... cuando 'algun.dominio' figura en alguno de los parametros de
configuracion $myorigin, $mydestination o $inet_interfaces.

El la quinta linea, redirigirá todo el correo de cualquier usuario de
'mi_dominio.virtual' a direccion6 ...
hola a todos, trabajo con suse 7.2 y no soy capaz de borrar la cola de
mensajes q se quedan tontos, o algún mensaje q quiero q se borra, antes con
el sendmail lo tenía fácil por el ID y el /var/spool/mqueue pero ahora ando

En cuanto a las direcciones de reenvio, las que tienen forma '@otro_dominio '
son expandidas al mismo usuario de 'otro_dominio', pero esa expansión solo
funciona en la primera direccion de la lista (puede haber más, como se
muestra en los ejemplos anteriores).

Como se ha dicho en un principio, el servidor postfix aceptará correo de
cualquier usuario conocido en 'mi_dominio.virtual' y rechazará como imposible
cualquier usuario no conocido en ese dominio. Aquí radica la diferencia en el
estilo sendmail. Los usuarios locales NO son reconocidos a no ser que se se
adapte a algunas de las condiciones del fichero 'virtual' dentro de ese
dominio. Los alias definidos en '/etc/aliases' TAMPOCO son reconocidos en
este estilo. Hay que utilizar el estilo sendmail para poder utilizar
implicitamente alias y usuarios locales.

ESTILO SENDMAIL

Para fijar ese estilo tenemos que añadir en '/etc/postfix/main.cf' el nombre
del dominio virtual al parámetro de configuración $mydestination:

mydestination= $myhostname localhost.$mydomain $mydomain
mi_dominio.virtual

En el fichero '/etc/postfix/virtual' ahora NO debemos incluir la primera
línea del ejemplo del estilo postfix. Es decir, ahora quedaría:

usuario1@xxxxxxxxxxxxxxxxxx direccion1
usuario2@xxxxxxxxxxxxxxxxxx direccion2, direccion3, ...
usuario3 direccion4, direccion5, ...
@mi_dominio.virtual direccion6, ....

con el mismo significado y posibilidades. Ahora bien, la diferencia respecto
al estilo postfix es que ahora son utilizables los alias, usuarios locales y
listas de correos. Ejemplo, supongamos que tenemos definido el usuario local
'local1' y que en el fichero aliases tenemos también el alias,

alias1: local1

Ahora postfix SI que redirigirá el correo a destinatarios como
<alias1@xxxxxxxxxxxxxxxxxx> o <local1@xxxxxxxxxxxxxxxxxx> a
<local1@xxxxxxxxxxxxxxxx> aunque no aparezcan explícitamente en el fichero.
Evidentemente, si tampoco el usuario es reconocido como alias o usuario
local, es mensaje es devuelto.

Por si todas estas posibilidades no fueran pocas, en amboos estilos se pueden
incluir también expresiones regulares.

Para generar el fichero '/etc/postfix/virtual.db' o
'/etc/postfix/virtual.dbm' , una vez editado '/etc/postfix/virtual' hay que
ejecutar postmap

#) postmap hash: /etc/postfix/virtual

También hay que incluir en '/ect/postfix/main.cf' la linea

virtual_maps = hash:/etc/postfix/virtual

Con lo que postfix lo utilizara al cabo de alrededor de un minuto, o
inmediatamente tras

#) rcpostfix reload

> 2.- el access de sendmail a que se corresponde? sique la misma
> estructrutura el fichero?

El 'access' de postfix es mucho mas potente y flexible. Realmente, podemos
tener uno o varios ficheros que controlan el acceso segun distintos elementos
(cliente, remitente, destinatario etc). La estructura de los ficheros de
control es siempre la misma, y son invocados opcionalmente en las listas de
restricciones.

El formato de las tablas de accesso sigue siendo

modelo accion

cuando un modelo se reconoce en una direccion e-mail, dominio o nombre de
host, se realiza la accion.

Una linea que comience con # es un comentario. Una linea que comience en
blanco es una continuación

MODELOS DE DIRECCION E-MAIL:

usuario@dominio
Se reconoce la direccion e-mail si coincide

mi.dominio
Se reconoce la parte de dominio de una dirección si esta coincide.

usuario@
reconoce todas las direcciones e-mail de usuario independientemente
del
dominio.

Para que se reconozcan subdominios en nombre de hosts

.dominio.ejemplo

(nótese el punto inicial). En cuanto a direcciones IP podemos incluir 1,2, 3
o los 4 octetos. Si ponemos menos de cuatro octetos estos se entenderán como
los mas significativos. Por ejemplo

217.127

reconocerá cualquier dirección ip 217.127.xxx.xxx

ACCIONES:

REJECT
Rechaza la dirección, dominio etc, que es reconocida en el modelo
corespondiente. Se genera una respuesta genérica de error

[45]NN texto
Rechaza la direccion, dominio etc, que es reconocida en el modelo
correspondiente generando el codigo de error [45]NN con el texto indicado.

OK
Acepta la direccion, dominio. etc.

restriccion
Aquí se puede poner una lista de restricciones. Es decir, si se
reconoce el
modelo, entonces se tiene que pasar por la lista de retricciones indicada.

Igual que en 'virtual' tambien se pueden utilizar aquí expresiones regulares.

COMO SE UTILIZAN:

Para utilizar estos ficheros de acceso desde una lista de restricciones
tenemos que indicarlos de la forma
tipo_de_restriccion tipo_de_fichero:fichero_map

Estos son los tipos de restricciones

check_client_access
chequea el cliente (IP-hostname) de donde se solicita el servicio de
nuestro
servidor

check_sender_access
chequea la direccion del remitente.

check_helo_access
chequea la direccion etc que un cliente envia en los comandos SMTP
HELO o
EHLO.

check_recipient_access
chequea la direccion del destinatario

Por ejemplo, para filtrar qué remitentes admito, podría editar el fichero
'/etc/postfix/sender_access'. Una vez editado, con postmap

#) postmap hash:/etc/postfix/sender_access

Por último, en el fichero '/etc/postfix/main.cf' puedo poner la siguiente
lista de restricciones

smtpd_sender_restrictions =
check_sender_access hash:/etc/postfix/sender_access

Con ello, postfix realizará un chequeo del remitente de acuerdo con las
tablas modelo-accion que hayamos puesto en '/etc/postfix/sender_access' . Si
el resultado es REJECT, entonces se rechaza el correo, si es OK entonces se
analizan las restantes listas de restricciones en 'main.cf' (si es que las
hay). Nótese que el resultado puede ser derivado de aplicar, a su vez, otra
lista de restricciones indicada en ese fichero.

> 3.- los dos anteriores en caso de ser modificados como se genera el db
> correspondiente que en senmail se macia con el makemap has correspondiente?

Ya está contestado en las preguntas anteriores

> 4.- tengo intencion de instalar varios dominios en un servidor, en que
> variable del main.cf se los pongo?

Pues depende del estilo de modelo virtual que quieras adoptar. Si utilizas el
estilo sendmail entonces deberas incluir los dominios en 'main.cf' cuando
definas el parametro $mydestination

mydestination= $myhostname localhost.$mydomain $mydomain
mi_dominio.virtual1 mi_dominio.virtual2 ...

En caso de utilizar estilo postfix entonces deberas incluir en 'virtual' una
seccion por cada dominio virtual.

mi_dominio.virtual1 cualquier cosa
.....
mi_dominio.virtual2 cualquier cosa
.....

Supongo que querrás, asimismo, distribuir el correo que venga de los dominios
virtuales al resto de la red (hacer relay), como le valor por defecto de
$relay_domains es $mydestination, si ya hemos incluido todos los dominios en
los que queremos hacer relay en $mydestination, no hace falta incluirlos en
$relay_domains. En caso contrario, por ejemplo si se utiliza el estilo
postfix, habria que incluirlos:

relay_domains = $mydestination
mi_dominio.virtual1
mi_dominio.virtual2

> 5.- bien a la hora de empezar a usar sasl, siguiendo tu manual e igual, te
> aviso, se me esta liando el coco, dices que crear con saslpasswd con:
> saslpasswd (pones en el manual sasl) -c -u mi_dominio usuario. Pues bien si
> tengo varios dominios y quiero que para estas dos cuentas de coreo utilizar
> la autentificacion usuario@xxxxxxxxxxxx y usuario@xxxxxxxxxxxx tendré que
> hacer que el usuairo real que ahy en la maquina nos ea el mismo (usuario)
> sino que sería por ejejmplo usuario2 y usuairo2. Eto como se aplicaria a la
> orden saslpasswd? por que tengo el temor que si pongo saslpaswd -c -u
> dominio1.com usuario1 y saslpasswd -c -u dominio2.com usuario2 el sistema
> tomaria que la direccionde correo es usuairo1@xxxxxxxxxxxx y
> usuairo2@xxxxxxxxxxxxxx O estoy equivocado?
>
> me peudes ayduar con este tema?

lo de sasl es una errata (gracias). En cuanto a SASL solamente sé que el
usuario y la password NO TIENE NADA QUE VER NI SER LA MISMA que la que un
usuario utiliza como login (por ejemplo para hacer POP3).

Creo, (y aquí no estoy seguro) , que una vez que un cliente se identifica
satisfactoriamente con un usuario SASL y una password, ya queda autorizado y
por tanto puede hacer relay (si se ha configurado postfix adecuadamente,
claro). O sea, yo accedo al servidor SMTP como usuario/password, si tengo
exito, entonces como remitente puedo utilizar cualquiera de mis direcciones
virtuales. Repito, habría que probarlo, no estoy seguro.

> No se sialguna vez, seguro que , has configurado sendmail, pero a la hora
> de generarlo conel m4 yo lo ponia una cantidad grande de variales, features
> que ahora no se donde van o simplemente no existen... las privacyflags,
> blackrecipients, las listas de spammers ....

Utilicé sendmail hace mucho tiempo y quede horrorizado de la forma tan liosa
de configurarlo. La verdad que no tengo mucha idea.

La utilización básica de las listas negras es trivial en postfix.

1) define en 'main.cf' las listas que quieras utilizar. Por ejemplo

maps_rbl_domains = relays.ordb.org, dnsbl.njabl.org

2) después, en las listas de restricciones, utilízala con la restriccion

reject_maps_rbl.

Por último, para ver la configuracion que tenemos en main.cf (quitando
comentarios y otras historias, podemos hacer:

#) postconf -n

Y obtendremos un listado con lo importante de main.cf. Aquí teneis un listado
de mi configuración (yo no tengo dominios virtuales)

mozart #) postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
canonical_maps = hash:/etc/postfix/canonical
command_directory = /usr/sbin
config_directory = /etc/postfix
content_filter = vscan:
daemon_directory = /usr/lib/postfix
debug_peer_level = 2
default_process_limit = 10
defer_transports =
disable_dns_lookups = no
header_checks = regexp:/etc/postfix/regexp_intruders
inet_interfaces = all
local_recipient_maps = $alias_maps unix:passwd.byname
mail_name = Postfix on SuSE Linux 8.0 (i386)
mail_owner = postfix
mail_spool_directory = /var/mail
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
maps_rbl_domains = relays.ordb.org, dnsbl.njabl.org
masquerade_domains = oxixares.com
masquerade_exceptions = root
message_size_limit = 4096000
mydestination = $myhostname, localhost.$mydomain, $mydomain
myhostname = mozart.oxixares.com
mynetworks_style = subnet
myorigin = $mydomain
newaliases_path = /usr/sbin/sendmail
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/packages/postfix/README_FILES
relay_domains = $mydestination
relayhost =
relocated_maps = hash:/etc/postfix/relocated
sample_directory = /etc/postfix
sender_canonical_maps = hash:/etc/postfix/sender_canonical
sendmail_path = /usr/sbin/sendmail
setgid_group = maildrop
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
smtpd_helo_required = yes
smtpd_recipient_restrictions = reject_non_fqdn_sender,
reject_non_fqdn_recipient, permit_mynetworks,
permit_sasl_authenticated, reject_unauth_destination,
reject_unauth_pipelining, reject_invalid_hostname,
reject_non_fqdn_hostname, reject_maps_rbl, warn_if_reject
reject_unknown_client, permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_security_options = noanonymous
smtpd_sender_login_maps = hash:/etc/postfix/login_auth
strict_rfc821_envelopes = yes
transport_maps = hash:/etc/postfix/transport
virtual_maps = hash:/etc/postfix/virtual


Espero que te sirva.

Un saludo.


Guillermo.

--
Guillermo Ballester Valor
gbv@xxxxxxxxxxxx
Ogijares, Granada SPAIN



< Previous Next >