Postfix - restringe a comunicação dentro do domínio

2

Estou configurando um servidor de nuvem postfix e gostaria de restringir a comunicação dentro do domínio. Ou seja, os usuários podem se comunicar apenas com outros usuários que possuem um endereço no domínio de e-mail - sem mensagens de entrada ou de saída para outros domínios (como Gmail, Hotmail, etc.):

YES: [email protected] <----> [email protected]
NO:  [email protected] <----> [email protected]

O que é uma maneira simples de fazer isso? Estou usando o postfix / courier. Obrigado.

UPDATE - como fazer isso:

Em /etc/postfix/main.cf :

# first rule makes sure users cannot sent to people outside the domain
# (check_recipient_access is the one you want)
smtpd_recipient_restrictions =
 check_recipient_access regexp:/etc/postfix/recipient-access, 
 permit_sasl_authenticated,
 permit_mynetworks,
 reject_unauth_destination,
 permit


# block sends from external users
# (who cannot be authenticated by the system)
smtpd_sender_restrictions =
 permit_sasl_authenticated,
 permit_mynetworks,
 reject_authenticated_sender_login_mismatch, 
 reject

# use mysql to find authenticated addresses
smtpd_sender_login_maps = mysql:/etc/postfix/mysql-sender-login-maps.cf
# (could also use pcre or some other method)
#smtpd_sender_login_maps = pcre:/etc/postfix/sender-login-maps.pcre

Em /etc/postfix/mysql-sender-login-maps.cf :

user = dbuser
password = dbpassword
hosts = 127.0.0.1
dbname = dbname
# this will depend on your db/table structure
query = SELECT email FROM users WHERE email='%s' and enabled=1;

Teste com:

$ postmap -q [email protected] mysql:/etc/postfix/mysql-sender-login-maps.cf

Deve devolver o [email protected] , se existir na tabela de utilizadores, ou nada, se não for.

Se você decidiu usar pcre ( apt-get install postfix-pcre no Ubuntu), então em /etc/postfix/sender-login-maps.pcre :

/^(.*@domain.com)$/   ${1}

Teste com:

$ postmap -q [email protected] pcre:/etc/postfix/sender-login-maps.pcre

Deve devolver o [email protected] se o domínio corresponder ou nada, se não o fizer.

Finalmente, em /etc/postfix/recipient-access :

!/@domain.com/ REJECT

Obrigado @NickW!

    
por sa125 17.11.2014 / 17:14

1 resposta

5

A maneira mais fácil de impedir que pessoas enviem para seu servidor é permitir que somente pessoas autenticadas por SASL enviem, em seguida, defina smtpd_sender_restrictions como reject_sender_login_mismatch, reject , o que só permitirá usuários autenticados por SASL e somente quando seu endereço FROM corresponder ao seu Nome de acesso. Criar uma consulta SQL que selecione o email do usuário como o endereço autorizado é bastante simples.

Você configuraria smtpd_recipient_restrictions como check_recipient_access regexp:/etc/postfix/recipient-access , dentro de recipient_access você teria algo semelhante a !/@domain.com/ REJECT , o que significa que qualquer endereço de TO / CC / BCC que não seja seu domínio será rejeitado.

Este não é um artigo completo, mas deve levá-lo ao caminho certo.

    
por 17.11.2014 / 17:33

Tags