Postfix, Postfixadmin, Mysql, Courier, Clamav, Amavisd e Postgrey
Observações:
- Iremos levar em consideração que você possui uma instalação “limpa” do S.O. Debian GNU/Linux.
Atualizando o sitema
root@debian:~# aptitude update && aptitude dist-upgrade -y
Compilando e instalando o Postfix com suporte a quota
Por padrão, o Postfix não suporta o sistemas de quota. Com isso, vamos compilar o Postfix com o patch VDA para suportar esse recurso.
root@debian:~# cd /usr/src root@debian:/usr/src# apt-get source postfix root@debian:/usr/src# wget -c http://vda.sourceforge.net/VDA/postfix-vda-2.7.1.patch root@debian:/usr/src/postfix-2.7.1# cd postfix-2.7.1 root@debian:/usr/src/postfix-2.7.1# patch -p1 < ../postfix-vda-2.7.1.patch
Em seguida, vamos instalar alguns pacotes necessários.
root@debian:/usr/src/postfix-2.7.1# aptitude install debhelper po-debconf ssl-cert hardening-wrapper -y root@debian:/usr/src/postfix-2.7.1# aptitude install libdb-dev libpcre3-dev libmysqlclient-dev libssl-dev libsasl2-dev libpq-dev libcdb-dev -y root@debian:/usr/src/postfix-2.7.1# aptitude install libldap2-dev -y
Em seguida, vamos remover o pacote do Postfix que vem junto com a distribuição e instalar o pacote compilado com suporte a quota.
root@debian:/usr/src/postfix-2.7.1# dpkg-buildpackage root@debian:/usr/src/postfix-2.7.1# cd ../ root@debian:/usr/src# apt-get remove --purge postfix -y root@debian:/usr/src# dpkg -i postfix_*.deb
Durante o processo de instalação, teremos que responder algumas perguntas na instalação dos pacotes.
Postfix Configuration Tipo geral de configuração de mail: Site Internet Nome de mail do sistema: mail.dominio.com.br
Em seguida, instale alguns pacotes extras necessários.
root@debian:/usr/src# dpkg -i postfix-doc*.deb root@debian:/usr/src# dpkg -i postfix-mysql*.deb root@debian:/usr/src# dpkg -i postfix-pcre*.deb
Agora podemos instalar o restante dos pacotes que se fazem necessários.
root@debian:~# aptitude install sasl2-bin libsasl2-2 libsasl2-modules libsasl2-modules-sql libsasl2-modules-gssapi-heimdal root@debian:~# aptitude install postfix-policyd-spf-perl bsd-mailx procmail gamin root@debian:~# aptitude install mysql-server-5.1 mysql-client-5.1 libpam-mysql
Ajustando o Sistema
Primeiramente precisamos ajustar o UID e GID da máquina para que as permissões possam ser atribuídas de maneira adequada.
root@debian:~# grep postfix /etc/passwd postfix:x:104:107::/var/spool/postfix:/bin/false
Como podemos notar o GID do usuário postfix é 107. Esse valor vai ser usado para criarmos o usuário vmail que será responsável pelas mensagens e pela identificação dos módulos do courierauthmysql. Vamos criar um usuário com UID 107 no sistema para o funcionamento correto do sistema de vmail.
root@debian:~# adduser --system --shell /bin/false --home /srv/vmail --uid 107 --gid 107 vmail Adicionando usuário de sistema 'vmail' (UID 107) ... Adicionando novo usuário 'vmail' (UID 107) com grupo 'postfix' ... Criando diretório pessoal '/srv/vmail' ...
Para manter algumas compatibilidades, vamos criar o link simbólico a seguir.
root@debian:~# cd /home root@debian:~# ln -s /srv/vmail
Não esqueça de alterar as permissões dos diretórios que o Postfix utiliza no sistema.
root@debian:~# chgrp -R postfix /var/lib/postfix/
Também precisamos cadastrar o usuário postfix no grupo do sasl para os acessos corretos aos diretórios.
root@debian:~# usermod -G sasl postfix
E por fim, precisamos configura o home do usuário vmail corretamente também.
root@debian:~# chown -R vmail:postdrop /srv/vmail
Configurando o MySQL
Aqui iremos criar um usuário mail e uma base de dados para que o Postfix dentro do MySQL possa realizar a conexão no banco.
root@debian:~# mysql -u root -p Enter password: mysql> CREATE DATABASE mail; Query OK, 1 row affected (0.00 sec) mysql> CREATE USER 'mail'@'localhost' IDENTIFIED BY 'senha_usuario_mail'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON `mail` . * TO 'mail'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye
Devido ao método chroot do Postfix, também precisamos criar um link do MySQL para que o acesso possa ser realizado corretamente.
root@debian:~# mkdir -p /var/spool/postfix/var/run/mysqld
root@debian:~# vi /etc/init.d/mysql [...] case "${1:-''}" in 'start') [...] fi /bin/ln -f /var/run/mysqld/mysqld.sock /var/spool/postfix/var/run/mysqld/mysqld.sock ;; [...]
Configurando a PAM
Aqui precisamos configurar a PAM para conexão no banco de dados.
Primeiramente, vamos realizar um backup dos arquivos atuais.
root@debian:~# mv /etc/pam.d/pop3 /etc/pam.d/pop3.bkp root@debian:~# mv /etc/pam.d/imap /etc/pam.d/imap.bkp root@debian:~# mv /etc/pam.d/smtp /etc/pam.d/smtp.bkp
Em seguida, podemos criar o arquivo pop3 com os dados para conexão no banco.
root@debian:~# vi /etc/pam.d/pop3 auth required pam_mysql.so host=127.0.0.1 db=mail user=mail passwd=senha_usuario_mail table=mailbox usercolumn=username passwdcolumn=password crypt=1 account sufficient pam_mysql.so host=127.0.0.1 db=mail user=mail passwd=senha_usuario_mail table=mailbox usercolumn=username passwdcolumn=password crypt=1
Como o conteúdo é idêntico a todos, podemos apenas duplicar o arquivo criado para os demais arquivos necessários da PAM.
root@debian:~# cp /etc/pam.d/pop3 /etc/pam.d/imap root@debian:~# cp /etc/pam.d/pop3 /etc/pam.d/smtp
Ajustando o SASL
Após o Postfix configurado, crie o seguinte arquivo e adicione as linhas de configuração nele.
root@debian:~# vi /usr/lib/sasl2/smtpd.conf # pwcheck_method: saslauthd mech_list: PLAIN LOGIN auxprop_plugin: sql allow_plaintext: true sql_verbose: yes sql_engine: mysql sql_hostnames: localhost sql_user: mail sql_passwd: senha_usuario_mail sql_database: mail #sql_select: select password from mailbox where username = '%u@%r' sql_select: select password from mailbox where username = '%u'
Precisamos também ajudar a permissão do arquivo smtpd.conf.
root@debian:~# chmod o= /usr/lib/sasl2/smtpd.conf
Depois crie o link simbólico a seguir.
root@debian:~# ln -s /usr/lib/sasl2/smtpd.conf /etc/postfix/sasl/smtpd.conf
Vamos agora habilitar o sasl para ser iniciado e para que trabalhe enjaulado junto com o Postfix.
root@debian:~# vi /etc/default/saslauthd [...] START=yes [...] #OPTIONS="-c -m /var/run/saslauthd" OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Em seguida vamos criar o diretório necessário para o funcionamento correto do sasl.
root@debian:~# mkdir -p /var/spool/postfix/var/run/saslauthd
Tambem precisamos ajustar as permissões do diretóriodo sasl para que o Postfix possa trabalhar.
root@debian:~# chown postfix /var/spool/postfix/var/run/saslauthd/
Em seguida crie o link simbolico a seguir.
root@debian:~# cd /var/run root@debian:~# mv saslauthd saslauthd.bkp root@debian:~# ln -s /var/spool/postfix/var/run/saslauthd/
Feito isso, reinicie o serviço saslauthd.
root@debian:~# /etc/init.d/saslauthd restart
Criando o certificado para Criptografia com TLS
root@debian:~# cd /etc/postfix root@debian:/etc/postfix# openssl req -new -x509 -nodes -out /etc/postfix/smtp.exemplo.com.br.pem -keyout /etc/postfix/smtp.exemplo.com.br.pem -days 3650
Configurando o Postfix
Primeiramente vamos acertar o nome de origem dos emails:
root@debian:~# vi /etc/mailname mail.dominio.com.br
Vamos aproveitar e ajustar os arquivos de aliases. Primeiro vamos mover os arquivos aliases para o /etc/postfix.
root@debian:~# mv /etc/aliases* /etc/postfix
Em seguida ajuste o arquivo aliases alterando o alias da conta root para uma conta de usuário admin do sistema.
root@debian:~# vi /etc/postfix/aliases [...] root: conta@dominio.com.br
E para validar, recarregar as configurações dos alias.
root@debian:~# postalias /etc/postfix/aliases
Em seguida, faça um backup do main.cf original para configurar o sistema na nossa necessidade.
root@debian:~# mv main.cf main.cf.orig
root@debian:~# vi /etc/postfix/main.cf smtpd_banner = $myhostname ESMTP biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # TLS parameters #smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem #smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_cert_file = /etc/postfix/mail.dominio.com.br.pem smtpd_tls_key_file = /etc/postfix/mail.dominio.com.br.pem smtpd_tls_CAfile = /etc/postfix/mail.dominio.com.br.pem smtpd_use_tls=yes smtpd_tls_loglevel = 1 smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_use_tls = yes smtp_tls_note_starttls_offer = yes # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. alias_maps = hash:/etc/postfix/aliases alias_database = hash:/etc/postfix/aliases myhostname = mail.dominio.com.br mydomain = dominio.com.br myorigin = $myhostname mydestination = $myhostname, localhost relayhost = #mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mynetworks = 127.0.0.0/8, 200.200.200.32/27 relay_domains = $mydestination home_mailbox = Maildir/ #mail_spool_directory = /var/mail #mailbox_command = procmail -a "$EXTENSION" mailbox_command = /usr/bin/procmail -a "$EXTENSION" DEFAULT=$HOME/Maildir/ MAILDIR=$HOME/Maildir/ mailbox_size_limit = 0 message_size_limit = 10240000 recipient_delimiter = + mynetworks_style = subnet inet_interfaces = all default_transport = smtp # Amavis #content_filter=smtp-amavis:[127.0.0.1]:10024 smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_local_domain = $mydomain #smtpd_tls_auth_only = no #smtpd_sasl_application_name = smtpd # MySQL transport_maps = mysql:/etc/postfix/mysql_transport_maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_transport = virtual virtual_minimum_uid = 107 virtual_uid_maps = static:107 virtual_gid_maps = static:107 virtual_mailbox_base = /srv/vmail # Quota virtual_mailbox_limit = 51200000 virtual_mailbox_limit = 0 virtual_maildir_extended = yes virtual_mailbox_limit_override = yes virtual_mailbox_limit_maps= mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf virtual_overquota_bounce = yes virtual_maildir_limit_message = Desculpe, o diretório de correio do usuário estourou sua quota, por favor tente novamente depois. #Limitar a quantidade de CC smtpd_recipient_limit = 30 #Gerenciamento de tempo de fila #queue_run_delay = 150s #minimal_backoff_time = 150s #maximal_backoff_time = 150s bounce_queue_lifetime = 300s maximal_queue_lifetime = 300s #smtpd_helo_restrictions = #permit_mynetworks, #permit_sasl_authenticated, #reject_invalid_hostname, #reject_unknown_hostname, #reject_non_fqdn_hostname, #reject_unauth_pipelining smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_pipelining, reject_rbl_client dnsbl.njabl.org, reject_rbl_client list.dsbl.org, reject_rbl_client bl.spamcop.net, reject_rbl_client rbl.brasilrbl.com.br #reject_rbl_client zen.spamhaus.org, #reject_rbl_client cbl.abuseat.org #reject_unknown_client, smtpd_sender_restrictions = permit_sasl_authenticated, reject_non_fqdn_sender, reject_unauth_pipelining, reject_unknown_sender_domain #check_sender_access regexp:/etc/postfix/sender-proibidos smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_unknown_recipient_domain, #check_policy_service inet:127.0.0.1:60000 #check_recipient_access regexp:/etc/postfix/sender-proibidos #reject_unknown_client,
O próximo passo é criar os arquivos necessários para conexão e acsso ao banco de dados.
root@debian:~# vi /etc/postfix/mysql_transport_maps.cf user = mail password = senha_usuario_mail hosts = localhost dbname = mail table = domain select_field = transport where_field = domain
root@debian:~# vi /etc/postfix/mysql_virtual_alias_maps.cf user = mail password = senha_usuario_mail hosts = localhost dbname = mail table = alias select_field = goto where_field = address
root@debian:~# vi /etc/postfix/mysql_virtual_domains_maps.cf user = mail password = senha_usuario_mail hosts = localhost dbname = mail table = domain select_field = domain where_field = domain #additional_conditions = and backupmx = '0' and active = '1'
root@debian:~# vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf user = mail password = senha_usuario_mail hosts = localhost dbname = mail table = mailbox select_field = quota where_field = username
root@debian:~# vi /etc/postfix/mysql_virtual_mailbox_maps.cf user = mail password = senha_usuario_mail hosts = localhost dbname = mail table = mailbox select_field = CONCAT(SUBSTRING_INDEX(username,'@',-1),'/',SUBSTRING_INDEX(username,'@',1),'/') where_field = username
Precisamos também ajustar algumas permissões
chmod o= /etc/postfix/mysql_* chgrp postfix /etc/postfix/mysql_*
E já podemos reiniciar o serviço do Postfix.
root@debian:~# /etc/init.d/postfix restart
Configurando o Courier
Primeiramente vamos instalar os pacotes necessários.
root@debian:~# aptitude install courier-authdaemon courier-authlib courier-base courier-imap courier-pop courier-authlib-mysql
Assim como fizemos em todos os outros serviços, também precisamos configurar o Courier para conectar na base MySQL.
root@debian:~# vi /etc/courier/authdaemonrc #authmodulelist="authpam" authmodulelist="authmysql" # confirme se a linha a seguir possui o módulo de auticaçãodo mysql authmodulelistorig="authuserdb authpam authpgsql authldap authmysql authcustom authpipe"
Em seguida, faça um backup do arquivo authmysqlrc e configure seguindo o modelo a seguir.
root@debian:~# mv /etc/courier/authmysqlrc /etc/courier/authmysqlrc.orig root@debian:~# vi /etc/courier/authmysqlrc # MYSQL_SERVER localhost MYSQL_USERNAME mail MYSQL_PASSWORD senha_usuario_mail MYSQL_PORT 3306 MYSQL_DATABASE mail MYSQL_USER_TABLE mailbox MYSQL_CRYPT_PWFIELD password MYSQL_UID_FIELD 107 MYSQL_GID_FIELD 107 MYSQL_LOGIN_FIELD username MYSQL_HOME_FIELD "/srv/vmail" MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(username,'@',-1),'/',SUBSTRING_INDEX(username,'@',1),'/') MYSQL_QUOTA_FIELD quota
Reinicie os serviços do Courier:
root@debian:~# /etc/init.d/courier-authdaemon restart root@debian:~# /etc/init.d/courier-imap restart root@debian:~# /etc/init.d/courier-pop restart
Instalando e Configurando o Postfixadmin
Instalar os pacotes do apache e php, necessários.
root@debian:~# aptitude install apache2 libapache2-mod-php5 root@debian:~# aptitude install php5 php5-gd php5-imap php5-mysql php5-mcrypt php5-xmlrpc php5-intl php-pear
root@debian:~# cd /var/www root@debian:/var/www# wget -c http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz root@debian:/var/www# tar xzvf postfixadmin-2.3.5.tar.gz root@debian:/var/www# mv postfixadmin-2.3.5 postfixadmin
Com isso já temos o aplicativo disponível. Hora de configurá-lo.
root@debian:/var/www# vi postfixadmin/config.inc.php [...] $CONF['configured'] = true; [...] $CONF['default_language'] = 'pt-br'; [...] $CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'mail'; $CONF['database_password'] = 'senha_usuario_mail'; $CONF['database_name'] = 'mail'; $CONF['database_prefix'] = ''; [...] $CONF['admin_email'] = 'postmaster@dominio.com.br'; [...] $CONF['smtp_server'] = 'localhost'; $CONF['smtp_port'] = '25'; [...] $CONF['min_password_length'] = 6; $CONF['generate_password'] = 'YES'; $CONF['show_password'] = 'YES'; $CONF['page_size'] = '50'; [...] $CONF['default_aliases'] = array ( 'abuse' => 'abuse@dominio.com.br', 'hostmaster' => 'hostmaster@dominio.com.br', 'postmaster' => 'postmaster@dominio.com.br', 'webmaster' => 'webmaster@dominio.com.br' ); [...] $CONF['aliases'] = '0'; $CONF['mailboxes'] = '0'; $CONF['maxquota'] = '0' [...] $CONF['quota'] = 'YES'; $CONF['quota_multiplier'] = '1024000'; [...] $CONF['transport_options'] = array ( 'virtual', // for virtual accounts 'local', // for system accounts 'vacation', // for system accounts 'relay' // for backup mx ); $CONF['transport_default'] = 'virtual'; [...] $CONF['welcome_text'] = <<<EOM Olá, Bem vindo a sua nova conta de e-mail. EOM; [...]
Com o arquivo de configuração pronto, acesse o postfixadmin pelo seu navegador favorito e configure-o seguindo o que lhe pede.
http://ip_do_seu_servidor/postfixadmin/setup.php
Postfix Admin Setup Checker Change setup password Setup password: ****** Setup password (again): ****** Generate password hash Setup password
O sistema irá gerar um password hash para você.
Adicione a mesma em config.inc.php
root@debian:/var/www# vi postfixadmin/config.inc.php $CONF['setup_password'] = 'password_hash';
Em seguida, preencha o restante dos dados para criar o usuário superadmin do Postfixadmin.
Create superadmin account Setup password: mesma_senha_de_setup Administrador: endereço_de_email Senha: ****** Senha (confirmação): ****** Criar administrador
Em seguida, a mensagem de sucesso.
Administrador criado! (fabriciovc@dominio.com.br)
Para finalizar, basta apagar o arquivo setup.php
root@debian:~ # rm postfixadmin/setup.php
Acesse o Postfix pelo seu navegador, loque com o email do administrador que você criou e agora é só criar os domínios e as contas de correio.
http://ip_do_seu_servidor/postfixadmin/
Testando o SASL
Depois que o usuário estiver devidamente criado na base, você pode testar se o usuário esta autenticando normalmente por SASL. Você poderá usar o seguinte comando:
root@debian:~# testsaslauthd -u fabriciovc@dominio.com.br -p senha 0: OK "Success."
ou
root@debian:~# testsaslauthd -u fabriciovc@dominio.com.br -p senha -f /var/spool/postfix/var/run/saslauthd/mux 0: OK "Success."
Implementando Antivirus e Antispan com Amavisd-new
Como de costume, primeiramente, vamos instalar os pacotes.
root@debian:~# aptitude install bzip2 unrar unzip zip arj pax arc ripole cabextract lzop p7zip-full -y root@debian:~# aptitude install clamav clamav-freshclam clamav-daemon amavisd-new razor spamassassin
Instalando suporte a razor e pyzor
root@debian:~# aptitude install libnet-dns-perl razor pyzor -y
Acertando as configurações do razor e do pyzor
root@debian:~# su - amavis -c 'razor-admin -d --create' root@debian:~# su - amavis -c 'razor-admin -register' root@debian:~# su - amavis -c 'razor-admin -discover' root@debian:~# su - amavis -c 'pyzor discover'
Configuranções do Spamassassin
Em seguida vamos habilitar o uso do Spamassassin.
root@debian:~# vi /etc/default/spamassassin ENABLED=1 [...]
Agora podemos configurar o Spamassassin.
root@debian:~# vi /etc/spamassassin/local.cf rewrite_header Subject ***SPAM*** report_safe 0 trusted_networks 127. 192.168.0. required_score 2.0 [...]
Configurando o Amavisd
root@debian:~# vi /etc/amavis/conf.d/20-debian_defaults # Descomente as linhas a seguir: [...] [ qr'^\.(Z|gz|bz2)$' => 0 ], # allow any in Unix-compressed [ qr'^\.(rpm|cpio|tar)$' => 0 ], # allow any in Unix-type archives [ qr'^\.(zip|rar|arc|arj|zoo)$'=> 0 ], # allow any within such archives [...] # Caso precise habilitar whitelist para algum domínio específico, use o modelo a seguir: [...] # ENVELOPE SENDER SOFT-WHITELISTING / SOFT-BLACKLISTING @whitelist_sender_maps = ( new_RE( qr'.*@dominio.com.br$'i, ));
Testando se o amavis esta respondendo
root@debian:~# telnet 127.0.0.1 10024 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 [127.0.0.1] ESMTP amavisd-new service ready quit 221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel Connection closed by foreign host.
Ajustando o Postfix
Para que o Postfix acione o Amavis para verificação de virus e spam, precisamos configurá-lo.
root@debian:~# vi /etc/postfix/master.cf ### Amavisd-new ### smtp-amavis unix - - y - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - y - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000
Não esqueça de reiniciar o serviço.
root@debian:~# /etc/init.d/postfix restart
root@debian:~# telnet 127.0.0.1 10025 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 cortesvillela.com.br ESMTP Postfix (Debian/GNU) quit 221 Bye Connection closed by foreign host.
Não esqueça de adicionar ao final arquivo /etc/postfix/main.cf a linha abaixo e reiniciar o serviço do Postfix:
root@debian:~# vi /etc/postfix/main.cf content_filter=smtp-amavis:[127.0.0.1]:10024
Reiniciando os Serviços
root@localhost:~# /etc/init.d/clamav-daemon restart root@localhost:~# /etc/init.d/clamav-freshclam restart root@localhost:~# /etc/init.d/spamassassin restart root@localhost:~# /etc/init.d/amavis restart root@localhost:~# /etc/init.d/postfix restart
Instalando o Postgrey
Primeiramente vamos instalar os pacotes do Postgrey.
root@debian:~# aptitude install postgrey
Em seguida, configure o tempo de delay de entrega dos emails.
root@debian:~# vi /etc/default/postgrey POSTGREY_OPTS="--inet=10023 --delay=60"
Agora adicione no postfix a entrada para ele acionar o Postgrey para controle de spam.
root@debian:~# vi /etc/postfix/main.cf smtpd_recipient_restrictions = [...] check_policy_service inet:127.0.0.1:60000
Testando o Imap
root@debian:~# telnet localhost 143 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2010 Double Precision, Inc. See COPYING for distribution information. a login fabriciovc@dominio.com.br senha a OK LOGIN Ok. a logout * BYE Courier-IMAP server shutting down a OK LOGOUT completed Connection closed by foreign host.
Testando o Pop
root@debian:~# telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK Hello there. user fabriciovc@dominio.com.br +OK Password required. pass senha +OK logged in. quit +OK Bye-bye. Connection closed by foreign host.
Logs e Outras Informações
Verifique os logs para ver se não é mostrada nenhuma falha.
Agora teste enviando um e-mail com um virus para qualquer destinatário deste equipamento e verifique se está funcionando corretamente.
Um virus pode ser baixado em http://www.eicar.org/85-0-Download.html caso queira testar a interceptação de virus.
TODO - Itens que precisam ser homologados
Vacation
O Vacation funciona para gerenciar as mensagens de ausência ou ferias do usuários. Útil quando você sai de férias por exemplo e não vai ler e-mails por um tempo e deixa uma mensagem pré-definida com as informações sobre as pessoas que vão ser contactadas no tempo que você estará fora.
Preparando o ambiente
Primeiramente vamos criar o grupo e o usuário vacation.
root@debian:~# groupadd vacation root@debian:~# useradd -d /var/spool/vacation -g vacation -s /bin/false -m vacation
E seguida vamos copiar o arquivo do vacation para o seu HOME.
root@debian:~# cp /var/www/postfixadmin/VIRTUAL_VACATION/vacation.pl /var/spool/vacation/
Agora vamos criar o diretório que vai armazenar os logs e acertar as permissões dos diretórios e arquivos.
root@debian:~# mkdir /var/log/vacation/ root@debian:~# chown -R vacation:vacation /var/spool/vacation/ root@debian:~# chown -R vacation:vacation /var/log/vacation/ root@debian:~# chmod 750 /var/spool/vacation/ root@debian:~# chmod 700 /var/spool/vacation/vacation.pl root@debian:~# touch /var/log/vacation.log root@debian:~# chown vacation:vacation /var/log/vacation.log
Precisamos instalar as dependências para o vacation funcionar corretamente.
root@debian:~# aptitude install libmail-sender-perl libemail-valid-perl libmime-perl liblog-log4perl-perl liblog-dispatch-perl -y root@debian:~# aptitude install libmail-sender-perl libgetopt-argvfile-perl libmime-charset-perl libmime-encwords-perl -y
Aqui iremos acertar as configurações no arquivo vacation.pl.
root@debian:~# vim /var/spool/vacation/vacation.pl [...] #our $db_type = 'Pg'; ->temos que comentar essa linha our $db_type = 'mysql'; # leave empty for connection via UNIX socket our $db_host = ''; # connection details our $db_username = 'mail'; our $db_password = 'senha'; our $db_name = 'mail'; our $vacation_domain = 'autoreply.dominio.com.br'; [...] our $syslog = 1; our $log_to_file = 1; [...] my $interval = 1*1*1; # disabled by default #our $interval = 0; -> comentar essa linha e deixar my $interval = 60*60*24;
Uma etapa importante é criar dois domínios um principal e um domínio para o vacation que vão ser as auto repostas de ferias ou ausência.
Para isso, logue no Postfixadmin …
http://ip_servidor/postfixadmin
- Selecione Domínios/Criar domínio
- Agora informe o domínio
- A sua descrição
- Informe uma cota ou deixe ela como 0
- Transporte deixe o virtual
- Selecione Adicionar aliases padrão
- E selecione Criar domínio
Agora vamos criar o domínio do vacation
- O domínio agora será “autoreply.dominio.com.br” pois “dominio.com.br” é o domínio anteriormente criado
- Coloque uma descrição para ele exemplo domínio de ferias
- Selecione em transporte como vacation
- Selecione criar domínio
- Pode sair dessa tela.
Quota Notifications
Por: Fernando Bortolanza | fernandobortolanza[em]gmail.com
Se você quer receber as notificações de uso quota das contas de email, caso a o espaço destinado esteja cheio, siga os passos a seguir:
root@debian:~# cd /usr/local/sbin/ root@debian:~# wget http://puuhis.net/vhcs/quota.txt root@debian:~# mv quota.txt quota_notify root@debian:~# chmod 755 quota_notify
Abra o arquivo quota_notify e edite as seguintes variáveis:
root@debian:~# vi /usr/local/sbin/quota_notify my $POSTFIX_CF = "/etc/postfix/main.cf"; my $MAILPROG = "/usr/sbin/sendmail -t"; my $WARNPERCENT = 80; my @POSTMASTERS = ('postmaster@dominio.com.br'); my $CONAME = 'ISP.tld'; my $COADDR = 'postmaster@dominio.com.br'; my $SUADDR = 'postmaster@dominio.com.br'; my $MAIL_REPORT = 1; my $MAIL_WARNING = 1;
E para finalizar, vamos agendar oo script para nos avisar usando o cron.
root@debian:~# crontab -e [...] 0 0 * * * /usr/local/sbin/quota_notify &> /dev/null