Vous êtes sur la page 1sur 6

26/03/13

:: SZAZZ :: » Servidor de E-mail Com Postfix+ PostfixAdmin + Roundcube +MySQL + POP, SMTP e IMAP Autenticado

Search POSTS RECENTES Qual é o tamanho dos bancos de dados em sua instância MySQL?
Search
POSTS RECENTES
Qual é o tamanho dos bancos de dados
em sua instância MySQL?
Usando chave publica para conexão
SSH
Design Patterns Flyweight
Morte de qualquer maneira!
Contos sem baboseiras
LAST TWEET
@chevectra87 - 2 weeks, 5
days ago
Morre Hugo Chávez
http://t.co/2ug5w8M2fV
#mortehugochavez
TO LISTEN
TAGS
#mortehugochavez TO LISTEN TAGS SOBRE Servidor de E-mail Com Postfix + PostfixAdmin + Roundcube

Servidor de E-mail Com Postfix + PostfixAdmin + Roundcube +MySQL + POP, SMTP e IMAP Autenticado

By DK (Dheykson Santos)

Neste post iremos aprender configurar um servidor de e-mail completo, veremos cada passo detalhadamente.

Este post surgiu devido durante muito tempo eu ter tentado criar um servidor de e-mail, e não encontrar material

em português com tanta facilidade, então com essa dificuldade toda eu resolvi junta vários tutoriais em um

único post.

Espero que gostem, e qualquer dúvida é só enviar um e-mail para linux@dheykson.com.br.

Mãos a obra.

1. Instalando o Postfix

Este serviço é responsável pelo serviço conhecido como SMTP.

$ sudo apt-get install -y postfix postfix-mysql

Aparecerá alguns questionamento, basta apenas selecionar as opçãoes.

- OK

- Site Internet

- linux@dheykson.com.br ( coloque aqui seu e-mail do domínio para qual você está criando seu servidor ).

$ sudo cp -p /usr/share/postfix/main.cf.debian /etc/postfix/main.cf

Estamos copiando um arquivo padrão de configuração do postfix, arquivo chamado main.cf.

2. Pacotes de Autenticação POP3/IMAP

Estes pacotes são para estabelecer conexão segura entre o cliente pop3/imap e o servidor de e-mails.

$ sudo apt-get install -y courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap

courier-imap-ssl

3.

Pacotes de Autenticação SMTP

estes pacotes serão utilizados para autenticar usuários para envio de e-mails não deixando que um spammer

fique enviando e-mail a partir do nosso servidor.

$ sudo apt-get install -y libsasl2-modules libsasl2-modules-sql openssl sasl2-bin libpam-mysql

4. Criando o Banco de Dados para o Postfix

4.1. Baixo o arquivo .sql abaixo para criarmos a database e as tabelas.

———————————————————————————————————

wget http://www.dheykson.com.br/downloads/Postfix.sql

———————————————————————————————————

OBS.: Não esquecer de editar o arquivo com o comando “ vim “ e trocar a senha ( SENHA ).

4.2 Vamos instalar o Mysql-server

$ sudo apt-get install -y mysql-server

4.3 Vamor importar para o myslq, o banco responsável pelos mapas do postfix.

$ mysql -uroot -p < Postfix.sql

OBS.: Digite a senha cadastrada na instalação do mysql.

5. Configurando os mapas do Postfix

Uma vez que as tabelas foram criadas, configura o postfix para realizar

o mapeamento editando cada um dos arquivos, e não esquecendo de alterar as

credenciais de acesso ao banco de dados.

—————————————————————–

$ sudo vi /etc/postfix/mysql_virtual_alias_maps.cf

user = postfix

26/03/13

:: SZAZZ :: » Servidor de E-mail Com Postfix+ PostfixAdmin + Roundcube +MySQL + POP, SMTP e IMAP Autenticado

password = SENHA(cadastrada no arquivo Postfix.sql) hosts = 127.0.0.1 dbname = postfix table = alias select_field = goto where_field = address

—————————————————————–

$ sudo vi /etc/postfix/mysql_virtual_domains_maps.cf

user = postfix password = SENHA(cadastrada no arquivo Postfix.sql) hosts = 127.0.0.1 dbname = postfix table = domain select_field = domain where_field = domain additional_conditions = and backupmx = ‘0and active = ‘1

—————————————————————–

$ sudo vi /etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix password = SENHA(cadastrada no arquivo Postfix.sql) hosts = 127.0.0.1 dbname = postfix table = mailbox select_field = maildir where_field = username additional_conditions = and active = ‘1——————————————————————

$ sudo vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf user = postfix password = SENHA(cadastrada no arquivo Postfix.sql) hosts = 127.0.0.1 dbname = postfix table = mailbox select_field = quota where_field = username additional_conditions = and active = ‘1——————————————————————

$ sudo vi /etc/postfix/mysql_relay_domains_maps.cf user = postfix

password = SENHA(cadastrada no arquivo Postfix.sql) hosts = 127.0.0.1 dbname = postfix table = domain select_field = domain where_field = domain additional_conditions = and backupmx = ‘1

——————————————————————-

Alterar permissão dos mapas para somente root alterar e o postfix poder ler,

visto que temos credenciais de acesso ao banco nos arquivos.

$ sudo chgrp postfix /etc/postfix/mysql_*.cf

$ sudo chmod 640 /etc/postfix/mysql_*.cf

Criar usuário vmail para armazenar os e-mails de todos os vhosts, não necessitando assim uma conta no sistema para cada usuário

$ sudo groupadd -g 5000 vmail

$ sudo useradd -m -g vmail -u 5000 -d /home/vmail -s /bin/bash vmail

6. Configura o Postfix para Utilizar os Mapa

Uma vez que temos o banco de dados criados, os arquivos que fazem o mapeamento, temos que configurar no Postfix para o mesmo utilizar cada um dos mapeamentos para determinada tarefa, como segue:

$ sudo vi /etc/postfix/main.cf

——————————————————————– # Virtual Mailbox Domain Settings 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_mailbox_limit = 51200000 virtual_minimum_uid = 5000

26/03/13

:: SZAZZ :: » Servidor de E-mail Com Postfix+ PostfixAdmin + Roundcube +MySQL + POP, SMTP e IMAP Autenticado

virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_mailbox_base = /home/vmail virtual_transport = virtual

# Additional for quota support

virtual_create_maildirsize = yes virtual_mailbox_extended = yes virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf virtual_mailbox_limit_override = yes virtual_maildir_limit_message = Sorry, the your maildir has overdrawn your diskspace quota, please free up some of spaces of your mailbox try again. virtual_overquota_bounce = yes

# TLS parameters

smtpd_tls_cert_file = /etc/postfix/smtpd.cert smtpd_tls_key_file = /etc/postfix/smtpd.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

#The host name where your MX for virtual domains will point to myhostname = mail.domain.com mydestination = #Remains blank since we are going to host virtual domains relayhost = #Remains blank unless you are going to use your ISP’s SMTP server mail sending out mails. In which case it would be set to the host name of the ISP’s SMTP server

#Deixe esses parâmetros com seus valores padrão

alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mynetworks = /32 127.0.0.1/32 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, permit

# modify the existing smtpd_sender_restrictions

smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_pipelining, permit

# then add these

smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes

smtpd_sasl_path = smtpd smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain =

——————————————————————-

OBS.: Modificar para os IP’s que vão enviar e-mail o parametro, e também o mail.domain.com.

8. Autenticação de IMAP

Configuramos este arquivo para o IMAP realizar a conexão ao banco de dados para validar cada tentativa de conexão dos usuários.

Alteração para usar o módulo mysql no courier authdaemon

$ sudo vi /etc/courier/authdaemonrc

authmodulelist=”authmysql authpam”

$ sudo vi /etc/courier/authmysqlrc

———————————————————— MYSQL_SERVER 127.0.0.1 MYSQL_USERNAME postfix MYSQL_PASSWORD SENHA(cadastrada no arquivo Postfix.sql) MYSQL_PORT 0 MYSQL_OPT 0 MYSQL_DATABASE postfix MYSQL_USER_TABLE mailbox MYSQL_CRYPT_PWFIELD password MYSQL_UID_FIELD ’5000MYSQL_GID_FIELD ’5000MYSQL_LOGIN_FIELD username MYSQL_HOME_FIELD ’/home/vmail’ MYSQL_NAME_FIELD name MYSQL_MAILDIR_FIELD maildir MYSQL_QUOTA_FIELD concat(quota,’S’)

26/03/13

:: SZAZZ :: » Servidor de E-mail Com Postfix+ PostfixAdmin + Roundcube +MySQL + POP, SMTP e IMAP Autenticado

————————————————————

OBS.: Trocar USUARIO e SENHA, no qual você configurou no dump.sql lá em cima.

Reinicie os serviços e cheque os logs:

$ sudo /etc/init.d/courier-authdaemon restart

$ sudo /etc/init.d/courier-imap restart

$ sudo /etc/init.d/courier-imap-ssl restart

$ sudo /etc/init.d/courier-pop restart

$ sudo /etc/init.d/courier-pop-ssl restart

$ sudo tail -f /var/log/mail.info

9. Autenticação de SMTP

Antes de mais nada para habilitar o saslauthd fazemos:

$ sudo vi /etc/default/saslauthd

—————————————————————–

START=yes

e verifique neste arquivo se os mecanismos estão configurados como:

MECHANISMS=”pam”

e altere a opção OPTIONS:

OPTIONS=”-c -m /var/spool/postfix/var/run/saslauthd -r”

—————————————————————–

e então habilite o servico:

$ sudo /etc/init.d/saslauthd start

Configuramos o Postfix para o mesmo somente aceitar envio de e-mails de usuários autenticados via sasl

Cria o arquivo que diz para o Postfix como será a checagem da senha, no caso, via saslauthd

$ sudo vi /etc/postfix/sasl/smtpd.conf

—————————————————————–

pwcheck_method: saslauthd

mech_list: PLAIN LOGIN log_level: 5

—————————————————————–

Configura o módulo ’smtp’ no pam para que o sasl use este método para autenticar através do mesmo.

$ sudo vi /etc/pam.d/smtp

—————————————————————–

auth required pam_mysql.so user=postfix passwd=SENHA(cadastrada no arquivo Postfix.sql) host=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1

account sufficient pam_mysql.so user=postfix passwd=SENHA(cadastrada no arquivo Postfix.sql) host=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1

——————————————————————

Como estamos utilizando nosso smtp em uma jail, temos que realizar as seguintes alterações:

Crie o grupo sasl e adicione o usuário postfix ao mesmo adicionando esta linha no arquivo /etc/group

$ sudo vi /etc/group

sasl:x:45:postfix

Crie os arquivos/diretórios que ficarão dentro da jail para o postfix autenticar no sasl

$ sudo mkdir -p /var/spool/postfix/var/run/

$ sudo mv /var/run/saslauthd /var/spool/postfix/var/run/saslauthd

$ sudo ln -ns /var/spool/postfix/var/run/saslauthd /var/run/saslauthd

$ sudo cp /etc/sasldb2 /var/spool/postfix/etc/

$ sudo chgrp sasl /var/spool/postfix/etc/sasldb2

$ sudo chmod g+w /var/spool/postfix/etc/sasldb2

Reinicie os serviço e cheque o log

$ sudo /etc/init.d/courier-authdaemon restart

$ sudo /etc/init.d/saslauthd restart

$ sudo /etc/init.d/postfix restart

26/03/13

:: SZAZZ :: » Servidor de E-mail Com Postfix+ PostfixAdmin + Roundcube +MySQL + POP, SMTP e IMAP Autenticado

$ sudo tail -f /var/log/mail.info

10 Instalar o Postfixadmin

Baixe o postfixadmin na sua última versão.

$ sudo apt-get install -y apache2 php5 php5-imap php5-mysql

$sudo a2enmod php5

$sudo /etc/init.d/apache2 restart

$ wget http://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin_2.3rc5.tar.gz

Descompacte o arquivo e copie para dentro do seu webroot

$ tar xvzf postfixadmin_2.3rc5.tar.gz

$ sudo mv postfixadmin-2.3rc5/ /var/www/postfixadmin/

Altere o arquivo de configuração para configurar o sistema de deixá-lo pronto para o setup

$ sudo vi /var/www/postfixadmin/config.inc.php

————————————————————-

$CONF['configured'] = true;

$CONF['database_type'] = ‘mysqli’;

$CONF['database_host'] = ‘localhost’;

$CONF['database_user'] = ‘postfix’;

$CONF['database_password'] = ‘ SENHA(cadastrada no arquivo Postfix.sql) ‘;

$CONF['database_name'] = ‘postfix’;

$CONF['domain_path'] = ‘YES’;

$CONF['domain_in_mailbox'] = ‘NO’;

————————————————————-

Acesse o setup.php em http://seudominio.com.br/postfixadmin/setup.php Você vai criar uma senha para o setup quando em clicar em gerar a senha, ele vai lhe dar um hash:

$CONF['setup_password'] = ‘09f7acdd93b6c11b:0c68a098ba0940acec16cf36f784f7551e019852;

Copie ele e substitua a variável abaixo no arquivo config.inc.php

$CONF['setup_password'] = ‘changeme’

Novamente acesse o setup.php em http://seudominio.com.br/postfixadmin/setup.php, informe a senha de setup

que acabou de cadastrar, um e-mail válido e uma senha, este e-mail e a senha será seus dados de acesso, pois

cadastrá-los, basta acessar http://seudominio.com.br/postfixadmin/ e logar.

11 Instalando o RoundCube

Agora vamos baixar e instalar o roundcube, seu webmail.

wget http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/0.3.1/roundcubemail-

0.3.1.tar.gz

tar

zxvf roundcubemail-0.3.1.tar.gz

mv

roundcubemail-0.3.1 /var/www/webmail

chmod 777 /var/www/webmail/temp

chmod 777 /var/www/webmail/logs

Agora vamos criar o banco para o RoundCube, não esqueça de trocar a SENHA do arquivo abaixo.

———————————————————————————————————

wget http://www.dheykson.com.br/downloads/Roundcube.sql

———————————————————————————————————

Agora vamos importar o banco para o mysql.

$ sudo mysql -u root -p < Roundcube.sql

Agora vamos configurar o roundcube, copie os arquivo db.inc.php.dist e main.inc.php.distpara db.inc.php e main.inc.php

26/03/13

:: SZAZZ :: » Servidor de E-mail Com Postfix+ PostfixAdmin + Roundcube +MySQL + POP, SMTP e IMAP Autenticado

$ cp /var/www/webmail/config/db.inc.php.dist /var/www/webmail/config/db.inc.php $ cp
$ cp /var/www/webmail/config/db.inc.php.dist /var/www/webmail/config/db.inc.php
$ cp /var/www/webmail/config/main.inc.php.dist /var/www/webmail/config/main.inc.php
Em db.inc.php modifique as variáveis:
$rcmail_config ['db_dsnw'] = ‘mysql://roundcube:SENHA(utilizada no arquivo
Roudcube.sql)@localhost/roundcubemail’;
$rcmail_config ['mail_domain'] = ‘SEU_DOMINIO’;
PRONTO, seu servidor de e-mail está configurado.
Qualquer erro por favor me envie um e-mail que lhe respondo.
Abraços até a próxima, sugestões de post envie para linux@dheykson.com.br.
Recommend
0
TTwweeeett 0
0 comments
1 person listening
Sign in
++ FFoollllooww ccoonnvveerrssaattiioonn
PPoossttttoo
PPoosstt ccoommmmeenntt aass
Place your Footer Content here
BizzCard Theme by ThemeZee