Debian + Postfix + MySQL + PostfixAdmin + MailScanner + Webmail + Quotas

Procurei uma solução para servidor de email que contivesse domínios virtuais, quota, um gerenciador web, um webmail e mensagem automática de férias. Acabei encontrando e efetuando a implementação e como ela está bem estável, resolvi compartilhá-la com todos vocês.

[ Hits: 99.950 ]

Por: Douglas Q. dos Santos em 16/09/2010 | Blog: http://wiki.douglasqsantos.com.br


Instalando o Postfix, Courier, SASL



Vamos instalar os pacotes necessários.

# aptitude install postfix postfix-mysql postfix-doc postfix-policyd-spf-perl postfix-tls libsasl2-2 libsasl2-modules-sql libsasl2-modules libsasl2-dev sasl2-bin openssl libpam-smbpass courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-authlib-mysql courier-authdaemon

Confirme as opções com Y.

Ajustando o sistema:

Agora precisamos ajustar o UID e GID da máquina para que as permissões possam ser atribuídas de maneira adequada.

Vamos verificar o gid do postfix:

# cat /etc/passwd | grep postfix
postfix:x:105:108::/var/spool/postfix:/bin/false

O GID do postfix é 108, esse deve ser o valor informado no arquivo de configuração do postfix em /etc/postfix/main.cf nas seguinte linhas:

virtual_minimun_uid = 108
virtual_gid_maps = static:108
virtual_uid_maps = static:108

Em seguida precisamos criar um usuário com UID 108 no sistema para o funcionamento correto do sistema de vmail.

# adduser --system --shell /bin/false --uid 108 --gid 108 vmail

Mudar a permissão do home do usuário:

# chown -R vmail:postdrop /home/vmail

Arquivo de configuração do Postfix:

# vim /etc/postfix/main.cf

##############################
#Autor:Douglas Q. dos Santos
#Data: 27/08/2010
##############################
smtpd_banner = $myhostname ESMTP $mail_name
biff = no
######################
#Definicao do Hostname
######################
myhostname = mail.valefertil.com.br
#####################
#Definicao do Dominio
#####################
mydomain = valefertil.com.br
#######################################
#Lista de dominios aceitos pelo postfix
#######################################
mydestination = $myhostname, localhost.localdomain, mailfertil.$mydomain
#######################################
#Habilita o envio de e-mails para o dominio local
#######################################
append_dot_mydomain = no
###########################################
#Especifica um arquivo que contera os Alias
###########################################
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
###########################################
#Especifica qual o dominio principal que esta usando
###########################################
myorigin = $mydomain
##########################################
#Servidor responsavel pela entrega das mensagens
##########################################
relayhost =
#######################################
#Quais redes serão aceitas pelo postfix
#######################################
mynetworks = 127.0.0.1/32, 192.168.0.0/24, 10.10.10.0/24
#######################################
#Especifica um comando externo opcional
#######################################
mailbox_command = procmail -a "$EXTENSION"
recipient_delimiter = +
#######################################
#Quais interfaces serão usadas para sistema de email
######################################
inet_interfaces = all
##################################################
#Quais os protocolos usados pelo sistema de e-mail
##################################################
inet_protocols = all
###########################
#Tamanho maximo da mensagem
###########################
message_size_limit = 30720000
#############################
#Tamanho maximo do arquivo de armazenamento para
#Tamanho ilimitado deixar como 0
##############################
mailbox_size_limit = 0
header_checks = regexp:/etc/postfix/header_checks
##########################
#Autenticação dos Usuarios
##########################
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, reject_rbl_client opm.blitzed.org, reject_rbl_client list.dsbl.org,reject_rbl_client bl.spamcop.net, reject_rbl_client sbl-xbl.spamhaus.org, check_policy_service unix:private/policy
smtpd_tls_auth_only = no
##########################################
#Ativação do TLS (Transport Layer Security
##########################################
readme_directory = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
tls_random_source = dev:/dev/urandom

#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 = 108
virtual_uid_maps = static:108
virtual_gid_maps = static:108
virtual_mailbox_base = /home/vmail

#Quota
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 diretorio de correio do usuario estourou sua quota, por favor tente novamente depois.

Agora precisamos criar os arquivos necessários o acesso ao banco de dados. Esses são os arquivos referenciados no /etc/postfix/main.cf.

# vim mysql_transport_maps.cf

# /etc/postfix/mysql_transport_maps.cf
user = mail
password = senha
hosts = localhost
dbname = mail
table = domain
select_field = transport
where_field = domain

# vim mysql_virtual_alias_maps.cf

# /etc/postfix/mysql_virtual_alias_maps.cf
user = mail
password = senha
hosts = localhost
dbname = mail
table = alias
select_field = goto
where_field = address

# vim mysql_virtual_domains_maps.cf

# /etc/postfix/mysql_virtual_domains_maps.cf
user = mail
password = senha
hosts = localhost
dbname = mail
table = domain
select_field = domain
where_field = domain

# vim mysql_virtual_mailbox_limit_maps.cf

# /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = mail
password = senha
hosts = localhost
dbname = mail
table = mailbox
select_field = quota
where_field = username

# vim mysql_virtual_mailbox_maps.cf

user = mail
password = senha
hosts = localhost
dbname = mail
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1

Mudar as permissões dos arquivos criados para que o postfix possa acessá-los:

# chmod o= /etc/postfix/mysql_*
# chgrp postfix /etc/postfix/mysql_*

# vim /usr/local/etc/postfix/header_checks


# /etc/postfix/header_checks
/^Received:/ HOLD

Configuração do arquivo master.cf.

Agora que terminamos os arquivos de conexão com o banco devemos inserir as seguinte linhas ao final do arquivo /etc/postfix/master.cf:

# vim /etc/postfix/master.cf

vacation    unix  -       n       n       -       -       pipe
  flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}
policy  unix  -       n       n       -       -       spawn
  user=nobody argv=/usr/sbin/postfix-policyd-spf-perl

Gerando as chaves criptografadas para o nosso postfix:

# mkdir /etc/postfix/ssl
# cd /etc/postfix/ssl
# openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024


Informe a senha e confirme a senha:

# chmod 600 smtpd.key
# openssl req -new -key smtpd.key -out smtpd.csr


Informe a senha que foi informada no comando anterior e informe os dados que serão pedidos:

# openssl x509 -req -days 365 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

Informe a mesma senha novamente.

# openssl rsa -in smtpd.key -out smtpd.key.unec

Informe a mesma senha novamente.

# mv smtpd.key.unec smtpd.key
# openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 365


Informe a uma senha e confirme.

# chown -R root:postfix /etc/postfix/ssl/
# chmod -R 640 /etc/postfix/ssl/


Aliases:

# vim /etc/aliases

root:    ti@dominio.com.br

# newaliases

Os logs dos emails podem ser consultados em /var/log/maillog e /var/log/messages ou /var/log/syslog.

Configurando o SASL

Precisamos habilitar o SASL para ser iniciado e para que trabalhe enjaulado junto com o Postfix, já que o mesmo trabalha em modo chroot por default.

# vim /etc/default/saslauthd

[...]
START=yes
[...]
#OPTIONS="-c -m /var/run/saslauthd"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Em seguida crie o link a seguir:

# cd /var/run
# mv saslauthd saslauthd.bkp
# ln -s /var/spool/postfix/var/run/saslauthd/


Agora vamos configurar a conexão do SASL com o MySQL:

# vim /etc/postfix/sasl/smtpd.conf

# /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd sql
log_level: 3
mech_list: plain login cram digest

Adicione o usuário postfix ao grupo sasl:

# adduser postfix sasl

Não esqueça de reiniciar o serviço:

# /etc/init.d/saslauthd stop
# /etc/init.d/saslauthd start


Para finalizar, restarte o postfix:

# /etc/init.d/postfix stop
# /etc/init.d/postfix start


Devido ao método chroot do postfix, também precisamos criar um link do mysql para que o acesso possa ser realizado corretamente.

# mkdir -p /var/spool/postfix/var/run/mysqld
# vim /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
;;
[...]

Reinicie o servidor do mysql:

# /etc/init.d/mysql stop
# /etc/init.d/mysql start


Configurando o Courier

Assim como fizemos em todos os outros serviços, também precisamos configurar o Courier para conectar na base MySQL.

# vim /etc/courier/authdaemonrc

authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=5
authdaemonvar=/var/run/courier/authdaemon
subsystem=mail
DEFAULTOPTIONS=""
LOGGEROPTS=""

# vim /etc/courier/authmysqlrc

#/etc/courier/authmysqlrc
MYSQL_SERVER localhost
MYSQL_USERNAME mail
MYSQL_PASSWORD senha
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD '108'
MYSQL_GID_FIELD '108'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD '/home/vmail'
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD CONCAT("/home/vmail/",maildir)
MYSQL_QUOTA_FIELD concat(quota,'S')

Configurando os daemons de transporte:

# vim /etc/courier/imapd

#/etc/courier/imapd
ADDRESS=0
PORT=143
MAXDAEMONS=40
MAXPERIP=20
PIDFILE=/var/run/courier/imapd.pid
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=imapd"
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"
IMAP_KEYWORDS=1
IMAP_ACL=1
IMAP_CAPABILITY_ORIG="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE"
IMAP_PROXY=0
IMAP_PROXY_FOREIGN=0
IMAP_IDLE_TIMEOUT=60
IMAP_MAILBOX_SANITY_CHECK=0
IMAP_CAPABILITY_TLS="$IMAP_CAPABILITY AUTH=PLAIN"
IMAP_CAPABILITY_TLS_ORIG="$IMAP_CAPABILITY_ORIG AUTH=PLAIN"
IMAP_DISABLETHREADSORT=0
IMAP_CHECK_ALL_FOLDERS=0
IMAP_OBSOLETE_CLIENT=0
IMAP_UMASK=022
IMAP_ULIMITD=65536
IMAP_USELOCKS=1
IMAP_SHAREDINDEXFILE=/etc/courier/shared/index
IMAP_ENHANCEDIDLE=0
IMAP_TRASHFOLDERNAME=Trash
IMAP_EMPTYTRASH=Trash:7
IMAP_MOVE_EXPUNGE_TO_TRASH=0
SENDMAIL=/usr/sbin/sendmail
HEADERFROM=X-IMAP-Sender
IMAPDSTART=YES
MAILDIRPATH=Maildir

# vim /etc/courier/pop3d

#/etc/courier/pop3d
PIDFILE=/var/run/courier/pop3d.pid
MAXDAEMONS=40
MAXPERIP=4
POP3AUTH=""
POP3AUTH_ORIG="PLAIN LOGIN CRAM-MD5 CRAM-SHA1 CRAM-SHA256"
POP3AUTH_TLS=""
POP3AUTH_TLS_ORIG="LOGIN PLAIN"
POP3_PROXY=0
PORT=110
ADDRESS=0
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=pop3d"
POP3DSTART=YES
MAILDIRPATH=Maildir

# vim /etc/courier/imapd-ssl

#/etc/courier/impad-ssl
SSLPORT=993
SSLADDRESS=0
SSLPIDFILE=/var/run/courier/imapd-ssl.pid
SSLLOGGEROPTS="-name=imapd-ssl"
IMAPDSSLSTART=YES
IMAPDSTARTTLS=YES
IMAP_TLS_REQUIRED=0
COURIERTLS=/usr/bin/couriertls
TLS_KX_LIST=ALL
TLS_COMPRESSION=ALL
TLS_CERTS=X509
TLS_CERTFILE=/etc/courier/imapd.pem
TLS_TRUSTCERTS=/etc/ssl/certs
TLS_VERIFYPEER=NONE
TLS_CACHEFILE=/var/lib/courier/couriersslcache
TLS_CACHESIZE=524288
MAILDIRPATH=Maildir

# vim /etc/courier/pop3d-ssl

#/etc/courier/pop3d-ssl
SSLPORT=995
SSLADDRESS=0
SSLPIDFILE=/var/run/courier/pop3d-ssl.pid
SSLLOGGEROPTS="-name=pop3d-ssl"
POP3DSSLSTART=YES
POP3_STARTTLS=YES
POP3_TLS_REQUIRED=0
COURIERTLS=/usr/bin/couriertls
TLS_STARTTLS_PROTOCOL=TLS1
TLS_KX_LIST=ALL
TLS_COMPRESSION=ALL
TLS_CERTS=X509
TLS_CERTFILE=/etc/courier/pop3d.pem
TLS_TRUSTCERTS=/etc/ssl/certs
TLS_VERIFYPEER=NONE
TLS_CACHEFILE=/var/lib/courier/couriersslcache
TLS_CACHESIZE=524288
MAILDIRPATH=Maildir

Vamos gerar os certificados para autenticação agora via ssl:

# cd /etc/courier
# vim imap.cnf


RANDFILE = /usr/lib/courier/imapd.rand

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=BR
ST=PR
L=Curitiba
O=Empresa Mail Server
OU=Empresa IMAP SSL key
CN=mail.dominio.com.br
emailAddress=postmaster@dominio.com.br


[ cert_type ]
nsCertType = server

# vim pop3d.cnf

RANDFILE = /usr/lib/courier/pop3d.rand

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=BR
ST=PR
L=Curitiba
O=Empresa Mail Server
OU=Empresa POP3 SSL key
CN=mail.dominio.com.br
emailAddress=postmaster@dominio.com.br


[ cert_type ]
nsCertType = server

Agora vamos utilizar os comandos para gerar o certificados:

# rm /etc/courier/imapd.pem
# rm /etc/courier/pop3d.pem

# /usr/sbin/mkimapdcert
# /usr/sbin/mkpop3dcert


Reinicie os serviços do Courier:

# /etc/init.d/courier-authdaemon restart
# /etc/init.d/courier-imap restart
# /etc/init.d/courier-pop restart


Página anterior     Próxima página

Páginas do artigo
   1. O que será tratado neste artigo
   2. Algumas configurações iniciais
   3. Instalação dos pacotes para a configuração do Postfixadmin
   4. Instalando o Postfix, Courier, SASL
   5. Instalação e configuração do Clamav e MailScanner
   6. Instalação e configuração do Webmail
Outros artigos deste autor

Um pouco sobre IPtables

Bind9 em chroot no Debian Lenny

Bind9 slave em chroot no Debian Lenny

Alta disponibilidade com Debian Lenny + Heartbeat + DRBD8 + OCFS2 + MONIT + LVS

IDS com Snort + Guardian + Debian Lenny

Leitura recomendada

Gerando estatísticas do seu servidor de email utilizando o isoqlog

Instalando Postfix e Dovecot no SLES 11 e autenticando em um diretório da Novell (Edir)

Gmail com POP e SMTP no Thunderbird

Migração Zimbra com Zextras Migration Tool

Instalação do Postfix e OpenWebmail no Slackware

  
Comentários
[1] Comentário enviado por dolivervl em 16/09/2010 - 18:36h

Parabéns !! Mto bom o artigo.

[2] Comentário enviado por elvanineto em 16/09/2010 - 18:52h

Cara, ótimo artigo. Irei testar no fim de semana como laboratório.

[3] Comentário enviado por renatomartins em 16/09/2010 - 20:52h

Douglas uma outra boa opção tb é o sceo ele faz tudo isso que voce procurava e um pouco mais, devido uma linguagem interna propria bem simples que lhe ajuda a programar e deixar o servidor da maneira que voce quiser, lhe dando muitas alternativas na hora de executar tarrefas administrativas cm muita facilidade.

fica a dica que precisar de um mta bem flexivel use o sceo www.sceo.com.br

suporte dominio e virtuais em mysql ou arquivo texto
quota
quota de envio
ant-virus
greylist
spf
spamassassin
scripts
autoresonder
monitoramento

[4] Comentário enviado por psfdeveloper em 17/09/2010 - 09:13h

Cara, parabéns, esse artigo é impressionante. E se trata de um assunto que eu sempre tive dificuldade, que é configuração de servidores de e-mail.

Abraços.

[5] Comentário enviado por douglas_dksh em 17/09/2010 - 09:53h

Nos repositóriso na pagina 2 esses aqui não podem estar comentados.
#Postfix com patch para cotas.
#deb http://debian.home-dn.net/lenny postfix-vda/
#deb-src http://debian.home-dn.net/lenny postfix-vda/

tem que ficar assim
#Postfix com patch para cotas.
deb http://debian.home-dn.net/lenny postfix-vda/
deb-src http://debian.home-dn.net/lenny postfix-vda/


Pois sao nesses repositorios que ja temos o postfix com um patch para o suporte a cotas senao tem que baixar o postfix baixar o patch e recompilar tudo.


Desculpem pelo erro.

[6] Comentário enviado por ramos1986 em 17/09/2010 - 10:54h

Parabéns pelo artigo.

[7] Comentário enviado por abertuqui em 17/09/2010 - 11:28h

Bom artigo.

Quem busca um excelente servidor de e-mail com constantes atualizações e novos recursos, por favor, não deixem de conhecer em: http://www.iredmail.org


[8] Comentário enviado por johnnyfsan em 18/09/2010 - 00:12h

Parabens Douglas,
bom ver você crescendo assim.
Que nos traga bons artigos ainda.
hehehe!!

Abraçoo

Johnny Ferreira

[9] Comentário enviado por douglas_dksh em 18/09/2010 - 08:52h

Valew Johnny.

E quero postar muitos outros artigos para ajudar a nossa comunidade.


Viva o Linux.

Obrigado a todos pelo apoio e o incentivo de sempre estar trazendo novas soluçoes para o nosso dia-a-dia.

abraço.

[10] Comentário enviado por nildopd em 21/09/2010 - 11:18h

poxa parabens mano ... vou testa no servidor cobaia aqui... abraço ...

[11] Comentário enviado por kleison paiva em 22/09/2010 - 15:27h

olá;
ótimo tutorial ! mas estou seguindo ele aqui para configurar meu servidor, mas estou tendo problemas ao logar no postfix.admin. Fiz as configurações exatamente como no exemplo, mas quando digito o usuário = mail e a senha = senha, aparece a seguinte mensagem :
DEBUG iNFORMATION:
Invalid query: Table 'mail.admin' doesn't exist

Please check the documentation and website for more information.

[12] Comentário enviado por douglas_dksh em 27/09/2010 - 10:51h

bom dia.

cara pelo erro tem algo de errado na tabela aonde estão cadastrados os usuários que podem administrar o seu postfixadmin.

# mysql -u root -p

myql> use mail;

mysql> select username,password, active from admin;
+---------------------------+------------------------------------+--------+
| username | password | active |
+---------------------------+------------------------------------+--------+
| douglashx@gmail.com | $1$544dd7d5$agNG9KyUvGaZK61xff3Xb/ | 1 |
| suporte@dominio.com | $1$33e6e1a1$BhW44tZG72LNmOd4MgSST. | 1 |
+---------------------------+------------------------------------+--------+
2 rows in set (0.01 sec)

mysql>


note que no meu select tem 2 usuários cadastrados e ativos.

acesse o seu mysql e consulte essa tabela para verificar se tem os usuários.


verifique também se a base foi criada, cheque a sua configuração do postfixadmin e a configuração do mysql e verifique se foi criado a base para o postfixadmin.

pois se não foi criado a base para ele não vai ter de onde ele consultar.

Douglas.

[13] Comentário enviado por neonx em 15/10/2010 - 13:26h

muito bom o artigo... só que assim estou tendo um pequeno problema no postfixadmin o mesmo não está criando as contas de e-mail cria no banco tdo mas no sistema nao é criado o maildir deles tens alguma ideia do que pode ser feito?

[14] Comentário enviado por douglas_dksh em 15/10/2010 - 13:34h

Boa tarde quem cria os maildir é o mailscanner se vc ainda nao configurou ele então as caixas de mensagens não serao criadas.

Termine toda a configuração para entao começar a enviar emails.


Douglas.

[15] Comentário enviado por neonx em 15/10/2010 - 20:36h

a sacada é que já fiz toda a configuração e mesmo assim o mesmo continua não criando... na real estou me aventurando agora na questao do debian eu jah tenho outros servidores de e-mail funcionando (em slackware) desta mesma forma nos q eu fiz tbm tive problemas semelhantes que foi no postfixadmin antigo ao qual nao criava as contas.... nessa sua config o problema persiste???

[16] Comentário enviado por douglas_dksh em 16/10/2010 - 08:33h

Bom dia.

então caro colega, se voce conseguiu implementar a mesma solução usando o slackware, deveria conseguir resolver supostos problemas em relação a não criação de maildir.

Vamos a alguns pontos.

Você achou algum possivel erro nos arquivos de log ?

Não houve nem um arquivo digitado incorretamente ?

Todos os pacotes e dependencias foram instalados sem nem um erro ?

Houve alguma customização de kernel, que possa influênciar no processo de implementação do seu servidor ?

Eu fiz essa implementação várias vezes antes de postar aqui no VOL, pois o meu objetivo é somente ajudar o pessoal com alguns tipos de implementações em especifico.

E Desculpa de distribuições linux diferentes é somente pretesto para uma não resolução de problema e como você trabalha com o slackware qualquer tipo de problema com algum pacote de repositórios do debian você pode baixar o pacote da equipe de desenvolvimento e compilar ele e ativar as opções necessárias para a utilização em sua implementação.


Douglas.

[17] Comentário enviado por neonx em 16/10/2010 - 20:24h

olha nao esto utilizando pretexto de distribuicoes ou o q... o que eu quiz dizer eh que eu usei no slackware uma versao do postfixadmin ao qual tive que efetuar algumas modificações pois havia algum problema com relacao a criacao do maildir,eu usava tambem com maildrop ao qual faria tal criação, a minha suposta pergunta é se na sua versao ele cria automaticamente ou terei que fazer tais modificações no postfixadmin, outra coisa fiz exatamente o que está descrito no seu artigo que está muito bem explicado por sinal, também com relacao ao seus testes tenho plenas convicções de que seus testes foram satisfatorios e como já contribuo com o VOL a algum tempo não estou aqui para julgar mas apenas para contribuir com a galera livre...

Muito obrigado por sua contribuição.
Ânderson

[18] Comentário enviado por wishsometimes em 19/11/2010 - 18:11h

Olá amigos, achei muito bacana esse tutorial e está de parabéns. Resolvi testar o passo a passo e cheguei a concluir até o final porém quanto tento de qualquer forma logar com uma conta de e-mail utilizando pop ou imap me aparece a seguinte mensagem:

pop3d: authentication error: Input/output error

Será que tem algum detalhe que está faltando? Depois da instalação revisei todos os confs citados no tutorial, independente agradeço a oportunidade de aprimorar meus conhecimentos.

Att, Sérgio Ricardo

[19] Comentário enviado por nildopd em 20/11/2010 - 10:54h

amigo WISHSOMETIMES bom dia.


você já viu se no seu firewall está librado as portas pop e imap e do sql tb?

[20] Comentário enviado por wishsometimes em 23/11/2010 - 10:16h

Pra ser exato esse micro não tem nenhuma regra de firewall, a única coisa que fiz foi ativar o repasse de pacote.

Att, Sérgio Ricardo

[21] Comentário enviado por marcati em 04/12/2010 - 13:53h

Fala galera,
Primeiro agradeço o tutorial.
Bom, vamos ver se alguem pode me ajudar, estou seguindo seu tutorial.. mas estou parado no https://mailadmin.meudominio.com.br/installer

A instalacao do apache2-mod-php5 deu um erro, sera q não esta errado? nao eh libapache2-mod-php5? se for, eu instalei isso, mas mesmo assim continua nao acessando o site...

O do webmail eu consegui.. mais soh tem http://webmail.meudominio.com.br...

podem me ajudar? escrevi meio rapido.. espero que entendam...

abraço a todos

[22] Comentário enviado por removido em 25/12/2010 - 23:35h

Feliz Natal...obrigado pelo exemplo...mas acho que algo nao esta ok.....

olha a data que estou fazendo este exemplo.... 25-12-2010 23:35 - muita determinacao né ? kkkkk
o que esta me frustrando um pouco é que ja tentei alguns exemplos de instalacao do postfix e nao
consigo concluir com exito porque sempre tem algo que nao dá certo :-(

Fiz a risca tudo como mostra o exemplo.... mas nao abriu nada a linha abaixo?

https://mailadmin.dominio.com.br/setup.php


Quando fala no exmeplo em "seudominio.com.br" .... seria algo como "gmail.com"... pois eu nao tenho dominio... ou isso é tudo ficticio... desculpe...

Poderiam me ajudar, por favor?

Obrigado


ps - estou galgando no aprendizado do linux debian

[23] Comentário enviado por sirrengaw em 02/03/2011 - 12:06h

Olá Douglas, parabéns pelo Artigo, realmente está ajudando muito...
Estou com uma dúvida...
Aqui eu coloquei todos os hostnames voltados para mail.dominio.etc...

e ta tudo rodando belezinha, a única coisa que eu nao consegui ainda, é quando eu cadastro um
email, e vou no outlook e trago como conf de IMAP, ele só traz a pasta CAIXA DE ENTRADA e mais nada.

Tem alguma coisa que eu possa fazer pra ele trazer todas as pastas, como: Lixeira, Rascunho, Enviados?

As pastas normais que eu crio dentro do webmail ou pelo outlook se eu atualizo o imap, elas vem normal...

Tem alguma ideia do que pode ser esse erro?
Abraço
Wagner

[24] Comentário enviado por lberaldi em 12/07/2011 - 14:00h

Ola Douglas, gostei muito do tutorial, mas estou tendo um problema que imagino ser alguma besteira... quando desativo uma conta pelo postfixadmin ela trava para tudo exceto para enviar uma mensagem atraves do smtp por exemplo.
Ela trava o login do pop3, do imap, no webmail (que usa o imap) mas o smtp parece nao estar considerando o campo active do mysql quando faz a autenticacao.
Se puder me ajudar agradeço.
abs.

[25] Comentário enviado por dimago em 07/08/2011 - 23:27h

Boa noite Srs,

Douglas, parabéns pela iniciativa e pelo tutorial. Eu sempre usei dovecot e nunca usei com mysql. Resolvi sim experimentar esse tutorial, pois gostei muito dos players que voce usou e quero fica mais "amigo" do courier.

Bom, estou tendo alguns problemas, que já passei o dia procurando e nao encontrei. Quando tento acesso via webmail, ele me dá erro "Falha na Conexao com servidor IMAP" se faço via telnet, aparentemente NAO tenho problemas.

Configurei o outlook para recebimento, e com ele, pego esse erro no log:

Aug 7 23:21:20 smtp pop3d: Connection, ip=[::ffff:192.168.1.102]
Aug 7 23:21:20 smtp authdaemond: received auth request, service=pop3, authtype=login
Aug 7 23:21:20 smtp authdaemond: authmysql: trying this module

Aug 7 23:21:20 smtp authdaemond: SQL query: SELECT username, password, password, 109, 109, "/home/MAIL/vmail", CONCAT("/home/MAIL/vmail/",maildir), concat(quota,'S'), name, "" FROM mailbox WHERE username = 'diego@dominio.com.br'

Aug 7 23:21:20 smtp authdaemond: password matches successfully

Aug 7 23:21:20 smtp authdaemond: authmysql: sysusername=<null>, sysuserid=109, sysgroupid=109, homedir=/home/MAIL/vmail, address=diego@dominio.com.br, fullname=Diego Gomes, maildir=/home/MAIL/vmail/dominio.com.br/diego@dominio.com.br/, quota=102400000S, options=<null>

Aug 7 23:21:20 smtp authdaemond: Authenticated: sysusername=<null>, sysuserid=109, sysgroupid=109, homedir=/home/MAIL/vmail, address=diego@dominio.com.br, fullname=Diego Gomes, maildir=/home/MAIL/vmail/dominio.com.br/diego@dominio.com.br/, quota=102400000S, options=<null>

Aug 7 23:21:20 smtp pop3d: LOGIN, user=diego@dominio.com.br, ip=[::ffff:192.168.1.102], port=[50317]

Aug 7 23:21:20 smtp pop3d: scancur opendir("cur"): No such file or directory

detalhe: este diretorio aqui: "maildir=/home/MAIL/vmail/dominio.com.br/diego@dominio.com.br/" nao estava criado, eu criei nao mai, pensando que poderia ser isso, mas sem sucesso.

O outlook fica solicitando o login.

Se voce puder me dar uma luz ou outro amigo do vol que possa ter passado pelo mesmo problema, eu agradeço.

Obrigado,

Diego

[26] Comentário enviado por nildopd em 08/08/2011 - 00:31h

amigao DIMAGO, bom dia.

ja reparou como esta a configuraçao do SMTP IMAO ou POP3 ? pelo q eu vi no seu log agora
"Aug 7 23:21:20 smtp authdaemond: received auth request, service=<b>pop3</b>, authtype=login"

esta autenticando como pop3 e nao imap, verificar direitinho.... forte abraço e boa sorte.

em caso nao conseguir resolver, coloca o log completo tentarei te ajudar vlw... abraço

[27] Comentário enviado por dimago em 08/08/2011 - 08:39h

Oi nildo, bom dia!

a configuração que fiz no outlook foi pop3 realmente. Bom, sinceramente, nao consigo ver problema quanto a isso.

eu percebi que ele nao está criando sozinho o Maildir do usuário depois de criar ele no postfix admin e mandar um e-mail (nesse momento ele deveria criar a cx do usuário)

acredito que deva ter algo a ser feito no courier, mas como disse, sou crú no uso do courier..

Continuo com os debugs

Obrigado

[28] Comentário enviado por bctol em 16/08/2011 - 10:58h

Muito bom o artigo, tava precisando mesmo, vou testa-lo fim de semana. Só me da uma dica,
Tenho um cliente, que quer que somente os anexos e/ou imagens no e-mail enviados pelas contas da diretoria sejam visualizados, o demais e-mail da empresa, não poderia visualizar imagens no corpo ou no anexo da mensagens que não seja da diretoria. Tem como fazer isso?

[29] Comentário enviado por irgn em 24/05/2012 - 04:02h

Boas a todos,
eu estou a configurar o meu servidor de linux numa maquina de teste, já varios artigos e sempre me da o erro:
DEBUG INFORMATION:
Invalid query: Table 'mail.admin' doesn't exist.
Porque eu segui todos os passos correctamento.

Fiz assim e nada!
mysql> use mail;
Database changed
mysql> select username, password, active from admin;
ERROR 1146 (42S02): Table 'mail.admin' doesn't exist
mysql>

[30] Comentário enviado por douglas_dksh em 24/05/2012 - 08:44h

Velho da uma olhada aqui neste artigo, que tem as correções.

http://www.douglas.wiki.br/doku.php?id=email_completo

[31] Comentário enviado por odecam em 19/10/2012 - 13:22h

Olá Pessoal,

Efetuei a instalação no Debian Squeeze e tive o mesmo problema do amigo neonx, não estava subindo o Mailscanner e conseqüentemente não criava as maildir.

Para corrigir o problema basta inserir o parâmetro -U no arquivo /usr/sbin/MailScanner como abaixo:

#!/usr/bin/perl -I/usr/share/MailScanner/

Inserir o parâmetro no final

#!/usr/bin/perl -I/usr/share/MailScanner/ -U

Depois só reiniciar o serviço do mailscanner e ser feliz.

Abraço.

[32] Comentário enviado por andrew_ em 24/12/2012 - 02:52h

Boa Noite uma pergunta eu já tenho um server com algumas paginas hospedadas e o meu NameVirtualHost *:80 existe um jeito de usa usar o NameVirtualHost *:443 junto ou qual seria a forma correta dessa configuração?

os meus sites estão em home/<site>/<www>
e gostaria de usar para o e-mail as configurações /home/<site>/e-mail/
como ficaria as minhas configurações? assim ?

<VirtualHost *:443>
ServerAdmin webmaster@dominio.com.br
DocumentRoot "/home/site/postfixadmin"
ServerName mailadmin.dominio.com.br:443 (ou 80?)
ServerAlias mailadmin.dominio.com.br:443 ( ou 80 ?)
ErrorLog "/var/log/mailadmin.dominio.com.br-error_log"
CustomLog "/var/log/mailadmin.dominio.com.br-access_log" common
<Directory "/home/site/postfixadmin">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,deny
Allow From All
</Directory>
SSLEngine on
#Abaixo uma linha unica
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/etc/ssl/apache/server.crt"
SSLCertificateKeyFile "/etc/ssl/apache/server.key"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd-ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ServerSignature Off
</VirtualHost>

grato des de já

[33] Comentário enviado por douglas_dksh em 24/12/2012 - 10:31h

Cara você só vai precisar mudar o DocumentRoot

Não sei se o seu email já esta em /home/site/e-mail, caso não esteja mude ele para lá.

E no DocumentRoot mude de /home/<site>/<www> para
DocumentRoot "/home/site/e-mail"

Depois disso pode dar um reload no apache e testar :D

[34] Comentário enviado por andrew_ em 25/12/2012 - 17:48h


[33] Comentário enviado por douglashx em 24/12/2012 - 10:31h:

Cara você só vai precisar mudar o DocumentRoot

Não sei se o seu email já esta em /home/site/e-mail, caso não esteja mude ele para lá.

E no DocumentRoot mude de /home/<site>/<www> para
DocumentRoot "/home/site/e-mail"

Depois disso pode dar um reload no apache e testar :D



Eu acho que me esperecei errado, minha duvida e a seguinte eu tenho aluns sites da porta 80 quando eu mudo o NameVirtualHost *: de NameVirtualHost *:80 para NameVirtualHost *:443 e reinicio o apache meus sites não funcionam devidos a estarem na porta 80 qual seria a melhor forma de resolver isso?

[35] Comentário enviado por douglas_dksh em 25/12/2012 - 19:00h

cara da uma olhada no arquivo /etc/apache2/ports.conf

o arquivo tem que estar da seguinte forma caso seja debian :D

/etc/apache2/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
NameVirtualHost *:443
Listen 80

<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>


Note que agora tem o NameVirtualHost *:443 assim você pode colocar vários virtualhosts trabalhando na porta 443.

Agora caso você queira que quando um usuário fizer uma requisição na porta 80 e ser direcionado para a porta 443 é só fazer como o exemplo abaixo.

im /etc/apache2/sites-available/postfixadmin
<VirtualHost *:80>
ServerName postfixadmin.douglas.wiki.br
Redirect / https://postfixadmin.douglas.wiki.br/
</VirtualHost>

<VirtualHost *:443>
ServerAdmin webmaster@douglas.wiki.br
ServerName postfixadmin.douglas.wiki.br
DocumentRoot "/var/www/postfixadmin"
<Directory "/var/www/postfixadmin">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,deny
Allow From All
</Directory>

# ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
# <Directory "/usr/lib/cgi-bin">
# AllowOverride None
# Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
# Order allow,deny
# Allow from all
# </Directory>

<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag expose_php Off
php_flag allow_url_fopen Off
php_flag allow_url_include Off
php_flag magic_quotes_gpc Off
php_flag register_globals Off
php_flag disable_functions show_source
php_flag disable_functions system
php_flag disable_functions shell_exec
php_flag disable_functions passthru
php_flag disable_functions exec
php_flag disable_functions popen
php_flag disable_functions proc_open
php_flag disable_functions symlink
</IfModule>
CustomLog /var/log/apache2/postfixadmin.access.log combined
ErrorLog /var/log/apache2/postfixadmin.error.log
LogLevel warn
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/etc/ssl/apache/server.crt"
SSLCertificateKeyFile "/etc/ssl/apache/server.key"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
ServerSignature Off
</VirtualHost>

Teste e avise.

[36] Comentário enviado por andrew_ em 25/12/2012 - 23:30h


[35] Comentário enviado por douglashx em 25/12/2012 - 19:00h:

cara da uma olhada no arquivo /etc/apache2/ports.conf

o arquivo tem que estar da seguinte forma caso seja debian :D

/etc/apache2/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
NameVirtualHost *:443
Listen 80

<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>


Note que agora tem o NameVirtualHost *:443 assim você pode colocar vários virtualhosts trabalhando na porta 443.

Agora caso você queira que quando um usuário fizer uma requisição na porta 80 e ser direcionado para a porta 443 é só fazer como o exemplo abaixo.

im /etc/apache2/sites-available/postfixadmin
<VirtualHost *:80>
ServerName postfixadmin.douglas.wiki.br
Redirect / https://postfixadmin.douglas.wiki.br/
</VirtualHost>

<VirtualHost *:443>
ServerAdmin webmaster@douglas.wiki.br
ServerName postfixadmin.douglas.wiki.br
DocumentRoot "/var/www/postfixadmin"
<Directory "/var/www/postfixadmin">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,deny
Allow From All
</Directory>

# ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
# <Directory "/usr/lib/cgi-bin">
# AllowOverride None
# Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
# Order allow,deny
# Allow from all
# </Directory>

<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag expose_php Off
php_flag allow_url_fopen Off
php_flag allow_url_include Off
php_flag magic_quotes_gpc Off
php_flag register_globals Off
php_flag disable_functions show_source
php_flag disable_functions system
php_flag disable_functions shell_exec
php_flag disable_functions passthru
php_flag disable_functions exec
php_flag disable_functions popen
php_flag disable_functions proc_open
php_flag disable_functions symlink
</IfModule>
CustomLog /var/log/apache2/postfixadmin.access.log combined
ErrorLog /var/log/apache2/postfixadmin.error.log
LogLevel warn
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/etc/ssl/apache/server.crt"
SSLCertificateKeyFile "/etc/ssl/apache/server.key"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
ServerSignature Off
</VirtualHost>

Teste e avise.

Agora sim eu entendi como funciona, acredito que fiz a configuração me desculpe a ignorância mais não consigo acessa o mailadmin.dominio.com.br ele me da um aviso de certificado ssl eu clico em continuar assim mesmo ai ele da um erro da pagina não pode ser ? oque sera que eu fiz de errado.

[37] Comentário enviado por douglas_dksh em 26/12/2012 - 08:40h

Cara pelo jeito é o DocumentRoot que ta errado.

Da uma analisada nos arquivos de logs do seu virtualhost que vai ter algo, de preferencia de uma olhada no arquivo de erro, se for falta de algo ele vai acusar.

[38] Comentário enviado por andrew_ em 16/01/2013 - 11:47h


[37] Comentário enviado por douglashx em 26/12/2012 - 08:40h:

Cara pelo jeito é o DocumentRoot que ta errado.

Da uma analisada nos arquivos de logs do seu virtualhost que vai ter algo, de preferencia de uma olhada no arquivo de erro, se for falta de algo ele vai acusar.


E alguma coisa dentro das configuações do config.inc.php fiz uma configuração diferente de um outro tutorial e funcionou. obrigado pela ajuda! agora como já passei do postfix admin vou continuar a tutorial.

[39] Comentário enviado por andrew_ em 19/01/2013 - 12:45h

Preciso da ajuda de vcs mais uma vez quando tento Salvar o arquivo header_checks o console me retorna o seguinte erro :

"/usr/local/etc/postfix/header_checks" E212: Impossível abrir arquivo para escrita
Aperte ENTER ou digite um comando para continuar

Alguem passo pelo mesmo problema ?

[40] Comentário enviado por douglas_dksh em 19/01/2013 - 13:59h

E ai cara, o diretório /usr/local/etc/postfix/ existe ?

isso geralmente é quando tentamos criar um arquivo em um diretório que não existe.

e esse how to ta meio desatualizado, da uma olhada no meu site que eles estão atualizados. www.douglas.wiki.br

[41] Comentário enviado por vauires em 27/05/2015 - 20:23h

Alguém conseguiu colocar o servidor Postfix no ar, seguindo essa porcaria de artigo???
Se alguém conseguiu sem tre que fazer varias correções inclusive de digitação, responde aqui no VOL como conseguiu esse milagre.
Mais uma vez perdi tempo com esse lixo eletrônico, nem um pouco didático e muito mal elaborado.
Sugiro a equipe do VOL que comecem a classificar artigos desse tipo como lixo eletrônico.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts