Sei sulla pagina 1di 6

26/03/13 :: SZAZZ :: Servidor de E-mail Com Postfix + PostfixAdmin + Roundcube +MySQL + POP, SMTP e IMAP Autenticado

szazz.com.br/2010/12/06/servidor-de-e-mail-com-postfix-postfixadmin-roundcube-mysql-pop-smtp-e-imap-autenticado/ 1/6
Servidor de E-mail Com Postfix + PostfixAdmin +
Roundcube +MySQL + POP, SMTP e IMAP Autenticado
06/12/2010 POSTFIX 0 COMMENTS
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 no encontrar material
em portugus com tanta facilidade, ento com essa dificuldade toda eu resolvi junta vrios tutoriais em um
nico post.
Espero que gostem, e qualquer dvida s enviar um e-mail para linux@dheykson.com.br.
Mos a obra.
1. Instalando o Postfix
Este servio responsvel pelo servio conhecido como SMTP.
$ sudo apt-get install -y postfix postfix-mysql
Aparecer alguns questionamento, basta apenas selecionar as opoes.
- OK
- Site Internet
- linux@dheykson.com.br ( coloque aqui seu e-mail do domnio para qual voc est criando seu servidor ).
$ sudo cp -p /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
Estamos copiando um arquivo padro de configurao do postfix, arquivo chamado main.cf.
2. Pacotes de Autenticao POP3/IMAP
Estes pacotes so para estabelecer conexo 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 Autenticao SMTP
J estes pacotes sero utilizados para autenticar usurios para envio de e-mails no 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.: No 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 responsvel pelos mapas do postfix.
$ mysql -uroot -p < Postfix.sql
OBS.: Digite a senha cadastrada na instalao 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 no esquecendo de alterar as
credenciais de acesso ao banco de dados.

$ sudo vi /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
Search
POSTS RECENTES
Qual o tamanho dos bancos de dados
em sua instncia MySQL?
Usando chave publica para conexo
SSH
Design Patterns Flyweight
Morte de qualquer maneira!
Contos sem baboseiras
LAST TWEET
@chevectra87 - 2 weeks, 5
days ago
Morre Hugo Chvez
http://t.co/2ug5w8M2fV
#mortehugochavez
TO LISTEN
TAGS
SOBRE
26/03/13 :: SZAZZ :: Servidor de E-mail Com Postfix + PostfixAdmin + Roundcube +MySQL + POP, SMTP e IMAP Autenticado
szazz.com.br/2010/12/06/servidor-de-e-mail-com-postfix-postfixadmin-roundcube-mysql-pop-smtp-e-imap-autenticado/ 2/6
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 = 0 and 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 permisso 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 usurio vmail para armazenar os e-mails de todos os vhosts, no necessitando assim uma conta no
sistema para cada usurio
$ 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
szazz.com.br/2010/12/06/servidor-de-e-mail-com-postfix-postfixadmin-roundcube-mysql-pop-smtp-e-imap-autenticado/ 3/6
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 ISPs SMTP server mail sending out mails.
In which case it would be set to the host name of the ISPs SMTP server
#Deixe esses parmetros com seus valores padro
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 IPs que vo enviar e-mail o parametro, e tambm o mail.domain.com.
8. Autenticao de IMAP
Configuramos este arquivo para o IMAP realizar a conexo ao banco de dados para validar cada tentativa de
conexo dos usurios.
Alterao para usar o mdulo 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 5000
MYSQL_GID_FIELD 5000
MYSQL_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
szazz.com.br/2010/12/06/servidor-de-e-mail-com-postfix-postfixadmin-roundcube-mysql-pop-smtp-e-imap-autenticado/ 4/6

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


Reinicie os servios 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. Autenticao 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 esto configurados como:
MECHANISMS=pam
e altere a opo OPTIONS:
OPTIONS=-c -m /var/spool/postfix/var/run/saslauthd -r

e ento habilite o servico:


$ sudo /etc/init.d/saslauthd start
Configuramos o Postfix para o mesmo somente aceitar envio de e-mails de usurios 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 mdulo smtp no pam para que o sasl use este mtodo para autenticar atravs 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 alteraes:
Crie o grupo sasl e adicione o usurio postfix ao mesmo adicionando esta linha no arquivo /etc/group
$ sudo vi /etc/group
sasl:x:45:postfix
Crie os arquivos/diretrios que ficaro 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 servio 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
szazz.com.br/2010/12/06/servidor-de-e-mail-com-postfix-postfixadmin-roundcube-mysql-pop-smtp-e-imap-autenticado/ 5/6
$ sudo tail -f /var/log/mail.info
10 Instalar o Postfixadmin
Baixe o postfixadmin na sua ltima verso.
$ 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 configurao 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 varivel 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 vlido 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, no esquea 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
szazz.com.br/2010/12/06/servidor-de-e-mail-com-postfix-postfixadmin-roundcube-mysql-pop-smtp-e-imap-autenticado/ 6/6
Tweet Tweet 0
BizzCard Theme by ThemeZee
$ 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 variveis:
$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.
Abraos at a prxima, sugestes de post envie para linux@dheykson.com.br.
Place your Footer Content here
Recommend 0
0 comments

1 person listening
Sign in
Post comment as Post comment as
Post to Post to
+ Follow conversation + Follow conversation

Potrebbero piacerti anche