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!