Servidor de email: Postfix + Courier IMAP + RoundCube e usuários virtuais (Debian e derivados)

Configuração detalhada de um servidor de e-mails que utiliza autenticação por usuários virtuais não cadastrados no sistema Linux, mas sim no banco de dados PostgreSQL, com o webmail RoundCube para acesso dos usuários via internet.

[ Hits: 97.598 ]

Por: Isaias J. A. Soares (http://lattes.cnpq.br/9504289735203731) em 29/09/2010


Instalação e configuração do Courier, autenticação e usuários virtuais



Instalado o Postfix, vamos cuidar da autenticação pelo banco de dados, imap e configuração dos usuários virtuais. Instale os pacotes:

# aptitude install courier-pop courier-pop-ssl courier-imap courier-imap-ssl courier-authdaemon courier-authlib-postgresql

Criação dos certificados:

Após a instalação temos que gerar certificados para serem utilizados com os pacotes courier-pop-ssl e courier-imap-ssl. Então vamos lá:

# cd /etc/courier

Crie o arquivo imapd.cnf:

# cp imapd.cnf.dpkg-new imapd.cnf

Edite agora o arquivo "imapd.cnf", adicionando as suas informações nos campos abaixo:

C=BR
ST=SP
L=Minha Cidade
[email protected]

Bem, se souber o que está fazendo, altere os outros campos, se quiser. Agora, gere o certificado:

# mkimapdcert

Se existir o certificado de pop, renomeie-o, e gere o novo:

# mv pop3d.pem pop3d.pem.old

Edite o arquivo "pop3d.cnf" do mesmo modo que o "imap.conf". Gere o novo certificado de pop:

# mkpop3dcert

No fim, os arquivos tem que ficar próximo disso:

imapd.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=SP
L=Minha Cidade
O=Courier Mail Server
OU=IMAP SSL key
CN=localhost
[email protected]

[ cert_type ]
nsCertType = server

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=SP
L=Minha Cidade
O=Courier Mail Server
OU=POP3 SSL key
CN=localhost
[email protected]

[ cert_type ]
nsCertType = server

Ok, até o momento não fizemos muito mais do que uma instalação básica. A criação de usuários virtuais exige um esquema de autenticação um pouco mais elaborado. É necessário configurar o daemon de autenticação para utilizar o módulo do postgre. Edite "/etc/courier/authdaemonrc" e inclua 'authpgsql', na lista de módulos a serem carregados. Nessa linha, o meu ficou assim:

authmodulelist="authpam authcram authpgsql"

# Lista de todos os módulos disponíveis:
authmodulelistorig="authuserdb authpam authpgsql authldap authmysql authcustom authpipe"

É interessante, na fase de testes, habilitar a exibição de informações de debug nos logs (/var/log/syslog):

DEBUG_LOGIN=1 # ativa o debug
DEBUG_LOGIN=2 # ativa o debug e exibe as senhas

courier-authdaemon courier-authlib-postgresql

#DEBUG AUTHDAEMON

ATENÇÃO: Não esqueça de desativar os debugs depois de finalizar o processo!

Agora vamos reconfigurar o Postfix a fim de criar usuários virtuais. Para isso vamos ter que criar um banco de dados para que o Postfix retire dele as informações. Além disso, temos que especificar como essas informações serão retiradas do nosso banco de dados, via comandos SQL. Vamos começar alterando as variáveis no /etc/postfix/main.cf para (exemplo para um servidor 'urano'):

myhostname = urano.meudominio.com.br
mydomain = meudominio.com.br

Agora adicionaremos no final do arquivo as linhas:

# Domínios virtuais com o PostgreSQL:
virtual_gid_maps = static:107
virtual_uid_maps = static:108
virtual_transport = virtual
virtual_mailbox_limit = 51200000
virtual_mailbox_base = /var/vusers
virtual_alias_maps = pgsql:/etc/postfix/pgsql_virtual_aliases_maps.cf
virtual_mailbox_domains = pgsql:/etc/postfix/pgsql_virtual_domains_maps.cf
virtual_mailbox_maps = pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf

ATENÇÃO: NO meu sistema, o id de usuário do Postfix é 107, e do grupo postfix é 108. Ajuste para os valores correspondentes no seu sistema. Incluindo os esquemas de autenticação TLS, o meu arquivo /etc/postfix/main.cf completo ficou:

OBS.: Não altere a ordem de precedência dos comandos do arquivo original, ela é importante.

# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
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_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = urano.meudominio.com.br
mydomain = meudominio.com.br
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination =
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4

# Domínios virtuais com o PostgreSQL:
virtual_gid_maps = static:107
virtual_uid_maps = static:104
virtual_transport = virtual
virtual_mailbox_limit = 0
virtual_mailbox_base = /mail/vusers
virtual_alias_maps = pgsql:/etc/postfix/pgsql_virtual_aliases_maps.cf
virtual_mailbox_domains = pgsql:/etc/postfix/pgsql_virtual_domains_maps.cf
virtual_mailbox_maps = pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf

Obs.: As linhas que contém 'pgsql:' indicam que o Postfix irá solicitar ao módulo correspondente (postgres) para que execute os comandos em banco de dados. Estes comandos se referem aos scripts que o Postfix irá executar para acessar o banco de dados. Obviamente, temos que criar os scripts.

Arquivo pgsql_virtual_aliases_maps.cf:

user = postfix
password = postpass
hosts = localhost
dbname = mail
query = SELECT address FROM aliases WHERE alias='%s'

Arquivo pgsql_virtual_domains_maps.cf:

user = postfix
password = postpass
hosts = localhost
dbname = mail
query = SELECT domain FROM domain WHERE domain='%s'

Arquivo pgsql_virtual_mailbox_maps.cf:

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

Ajuste o arquivo /etc/courier/authpgsqlrc:

PGSQL_HOST              localhost
PGSQL_PORT              5432
PGSQL_USERNAME          postfix
PGSQL_PASSWORD          postpass
PGSQL_DATABASE          mail
PGSQL_USER_TABLE        mailbox
PGSQL_CRYPT_PWFIELD     password
PGSQL_UID_FIELD         107
PGSQL_GID_FIELD         108
PGSQL_LOGIN_FIELD       username
PGSQL_HOME_FIELD        '/var/vusers'
PGSQL_MAILDIR_FIELD     maildir

ATENÇÃO: Novamente, no meu sistema, o id de usuário do postfix é 107, e do grupo postfix é 108. Ajuste para os valores correspondentes no seu sistema.

Obs.: O diretório '/var/vusers' será criado para se colocar as caixas dos usuários virtuais (nos passos a seguir).

Agora vamos criar o usuário postfix no postgre, com a mesma senha que colocamos no script:

# su - postgres
$ createuser -A -D -E -P postfix

Digite a senha para a nova role: postpass
Digite-a novamente: postpass

Crie um usuário admin com o mesmo login de um usuário do sistema para criar um banco de dados, tipo:

createuser -a -d -E -P useradmin

Agora vamos criar o banco de dados 'mail' e as tabelas que vamos utilizar:

# su useradmin
$ createdb mail
$ psql mail


Comandos SQL (pode copiar e colar no console):

ALTER DATABASE mail OWNER TO postgres;

\connect mail

SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;

SET search_path = public, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

CREATE TABLE aliases (
    alias character varying(255) DEFAULT ''::character varying NOT NULL,
    address text NOT NULL,
    domain character varying(255) DEFAULT ''::character varying NOT NULL,
    created time with time zone DEFAULT now() NOT NULL,
    modified time with time zone DEFAULT now() NOT NULL,
    active integer DEFAULT 1 NOT NULL
);


ALTER TABLE public.aliases OWNER TO postfix;

CREATE TABLE domain (
    domain character varying(255) DEFAULT ''::character varying NOT NULL,
    description character varying(255) DEFAULT ''::character varying NOT NULL,
    aliases integer DEFAULT 0 NOT NULL,
    mailboxes integer DEFAULT 0 NOT NULL,
    maxquota integer DEFAULT 0 NOT NULL,
    transport character varying(255) DEFAULT NULL::character varying,
    backupmx integer DEFAULT 0 NOT NULL,
    created time with time zone DEFAULT now() NOT NULL,
    modified time with time zone DEFAULT now() NOT NULL,
    active integer DEFAULT 1 NOT NULL
);


ALTER TABLE public.domain OWNER TO postfix;

CREATE TABLE mailbox (
    username character varying(255) DEFAULT ''::character varying NOT NULL,
    password character varying(255) DEFAULT ''::character varying NOT NULL,
    name character varying(255) DEFAULT ''::character varying NOT NULL,
    maildir character varying(255) DEFAULT ''::character varying NOT NULL,
    quota integer DEFAULT 0 NOT NULL,
    domain character varying(255) DEFAULT ''::character varying NOT NULL,
    created time with time zone DEFAULT now() NOT NULL,
    modified time with time zone DEFAULT now() NOT NULL,
    active integer DEFAULT 1 NOT NULL
);


ALTER TABLE public.mailbox OWNER TO postfix;

INSERT INTO domain (domain, description, aliases, mailboxes, maxquota, transport, backupmx, created, modified, active) VALUES ('meudominio.com.br', 'Domínio Oficial do meu site', 0, 0, 0, NULL, 0, '23:11:33.126422-03', '23:11:33.126422-03', 1);

INSERT INTO aliases (alias, address, domain, created, modified, active) VALUES ('isaias', '[email protected]', '', '11:54:33.577091-03', '11:54:33.577091-03', 1);

INSERT INTO mailbox (username, password, name, maildir, quota, domain, created, modified, active) VALUES ('[email protected]', '$1$Uf8bM$5gO/4Dokk34vYECv1.HGa1', '', 'user/', 0, '', '23:51:53.816966-03', '23:51:53.816966-03', 1);
INSERT INTO mailbox (username, password, name, maildir, quota, domain, created, modified, active) VALUES ('[email protected]', '$1$Uf8bM$5gO/4Dokk34vYECv1.HGa1', 'Mailbox User', 'admin/', 0, '', '23:11:33.126422-03', '23:11:33.126422-03', 1);
INSERT INTO mailbox (username, password, name, maildir, quota, domain, created, modified, active) VALUES ('[email protected]', '', 'Mailbox User', 'roundcube/', 0, '$1$Uf8bM$5gO/4Dokk34vYECv1.HGa1', '23:11:33.126422-03', '23:11:33.126422-03', 1);

ALTER TABLE ONLY aliases
    ADD CONSTRAINT aliases_pkey PRIMARY KEY (address);

ALTER TABLE ONLY domain
    ADD CONSTRAINT domain_pkey PRIMARY KEY (domain);

ALTER TABLE ONLY mailbox
    ADD CONSTRAINT mailbox_pkey PRIMARY KEY (username);

REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO PUBLIC;

REVOKE ALL ON TABLE aliases FROM PUBLIC;
REVOKE ALL ON TABLE aliases FROM postfix;
GRANT ALL ON TABLE aliases TO postfix;

REVOKE ALL ON TABLE domain FROM PUBLIC;
REVOKE ALL ON TABLE domain FROM postfix;
GRANT ALL ON TABLE domain TO postfix;

REVOKE ALL ON TABLE mailbox FROM PUBLIC;
REVOKE ALL ON TABLE mailbox FROM postfix;
GRANT ALL ON TABLE mailbox TO postfix;

ATENÇÃO:
  • O Postfix trabalha com dois tipos de 'caixas' de e-mail: mbox e Maildir. No primeiro tipo, mbox, ele cria um arquivo único, no spool de emails do postfix (geralmente em '/var/mail' ou '/var/spool/mail'), com o nome do usuário. No segundo tipo, ele cria uma estrutura num diretório, no qual ficarão os e-mails. A distinção que define o uso de um estilo ou de outro é o caractere '/' no final da string que inserimos no banco de dados acima (tabela mailbox). Se o endereço do diretório estiver sem essa barra final, os mails vão para o arquivo '/var/mail/nome_do_usuario'. Do contrário, vão para a árvore de diretórios: <raiz do diretório virtual>/nome_especificado/. Em nosso caso, será o '/var/vusers' como diretório raiz para os nossos usuários.
  • Não coloque um domínio virtual listado na variável mydestination.
  • No arquivo de alias, temos um mapeamento de um alias (virtual) para um usuário/endereço (real). Não misture, para não obter resultados inesperados.
  • Neste artigo, as senhas inseridas para os usuários correspondem ao código encriptado da senha 'teste'. Você pode usar o comando 'authpasswd' para gerar outras chave e armazená-las na tabela mailbox de usuários no postgres:

    # authpasswd
    Password:
    Reenter password:
    $1$skrcM$z1Ql3ycdJv.ZieQ8ywYUS0

Ok, ajustados nossos registros no PostgreSQL e configurado o postfix para acessar os dados no bd, vamos criar os diretórios de email.

Crie o diretório /var/vusers (usuário:grupo = postfix:postfix).

# mkdir /var/vusers

Agora, crie as mailboxes dos dois usuários-exemplo do script sql:

# maildirmake /home/postfix/Maildir/user
# maildirmake /home/postfix/Maildir/admin
# chown -R postfix:postfix /home/postfix


Ok, agora vamos reiniciar os serviços:

# /etc/init.d/postfix reload
# /etc/init.d/courier-imap restart


Se o imap subir, ótimo, é hora de testar. Se você encontrar o seguinte erro:

Starting Courier IMAP-SSL server:/etc/init.d/courier-imap-ssl:
xmalloc: ../bash/variables.c:3095: cannot allocate 1065 bytes (0 bytes allocated)

Bem, é um erro novo, creio, o qual encontrei na versão Debian 64 bits. Como eu já tinha instalado em 32 bits, resolvi reinstalar o sistema (que era uma versão básica, somente para servidor), e usar 32 mesmo. Salvei os arquivos de configuração e mandei bala. Nessa versão, funcionou tudo, e o imap subiu redondo.

Bem, uma vez que o courier-imap estiver ativo, vamos testar a autenticação do imap:

# telnet 0 143
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc. See COPYING for distribution information.
0 login [email protected] teste
0 OK LOGIN Ok.
0 logout
* BYE Courier-IMAP server shutting down
0 OK LOGOUT completed

Nesse caso o login foi bem sucedido. Vamos dar um exemplo de falha:

# telnet 0 143
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc. See COPYING for distribution information.
0 login user
0 NO Error in IMAP command received by server. <- Falha
0 logout
* BYE Courier-IMAP server shutting down
0 OK LOGOUT completed

IMPORTANTE:

1) Digitar o '0' no início das linhas para os comandos telnet para o imap (143).
2) Colocar no campo 'username' da tabela 'mailbox' do banco de dados 'mail' o nome completo, com @ e nome de domínio, como na tabela do postgre, a menos que você saiba configurar diferente.
3) Em caso de falhas de autenticação (penei muito com isso, até entender o esquema), use os arquivos de log (/var/log/syslog) como geradores de pistas. Habilite o modo debug (DEBUG_LOGIN=2 no arquivo '/etc/courier/authdaemonrc'). Pode usar também os arquivos '/var/log/mail.err', '/var/log/auth.log'.

Agora vamos testar a autenticação pop:

# telnet meudominio.com.br 110
Trying 45.246.678.123...
Connected to urano.
Escape character is '^]'.
+OK Hello there.
user [email protected]
+OK Password required.
pass teste
+OK logged in.
quit
+OK Bye-bye.
Connection closed by foreign host.

Novamente, se houverem erros, dê uma olhada nos logs.

Faça vários testes, envie e-mails do seu servidor para fora (yahoo, gmail) e vice-versa e verifique se os e-mails estão sendo gravados nos respectivos maildirs. Utilize um 'ls -laR maildir' para checar se está tudo certo. Isso é importante porque o conteúdo desses diretórios é utilizado pelo imap para permitir ao roudcube gerenciar as mensagens. No final, não se esqueça de definir:

DEBUG_LOGIN=0

em /etc/courier/authdaemonrc. É importante o sistema de e-mail estar funcionando integralmente nessa fase, para uma instalação rápida e fácil do roundcube.

Página anterior     Próxima página

Páginas do artigo
   1. Instalação do Postfix
   2. Instalação e configuração do Courier, autenticação e usuários virtuais
   3. Instalação e configuração do Roundcube
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

As melhores ferramentas de colaboração para Linux

Tunando o Apache 1.3.x ou 2.x (prefork)

Arquivos de configuração de rede - Parte I - /etc/hosts

Vodafone Mobile Connect Card driver - Um excelente software para modems 3G

Servidor SSH - Prático e Seguro

  
Comentários
[1] Comentário enviado por doomk em 06/10/2010 - 16:30h

Excelente Artigo.

Achei bem interessante a integração dele com o Postgree, até então só tinha visto para o MySQL.

Foi para o favoritos.


Forte abraço.

[2] Comentário enviado por isoares em 07/10/2010 - 15:13h

Oi, doomk!

Obrigado. Esse artigo surgiu da minha dificuldade em instalar essa combinação de softwares. Na primeira tentativa, fiquei umas tres semanas, sem conseguir. Dava de cara com uma série de problemas, oriundos da minha falta de experiência no assunto e de conhecimento sobre esses esquemas de autenticação que citei. Resolvi então, durante a última tentativa, documentar tudo, pra virar artigo. Assim, outros e eu mesmo poderíamos consultar posteriormente.

A escolha do Postgres foi devida ao fato de que o utilizo como meu servidor padrão - desde sempre - de banco de dados. O Mysql pode ser mais rápido para determinadas tarefas, mas o Postgres é de longe mais completo. Claro, o foco de cada um deles é diferente.

Quando eu estudava na UFPR, um rapaz fez um estudo para o uso do Postgres para se montar um Datawarehouse (um banco de dados que armazena bancos de dados, como é feito no sistema bancário). A comparação do Postgres com os demais softwares, mesmo proprietários, me impressionou. Por isso, desde então, o adotei como servidor padrão.

Realmente, eu achei muita coisa envolvendo essa combinação com o Mysql no lugar do postgres, tive que dar uma boa garimpada para achar algo útil, mas, valeu a pena. Fico feliz que tenha gostado.

É possível que, futuramente, eu poste algumas melhorias, quando as tiver implementado.

Um forte abraço!

Isaias.

[3] Comentário enviado por renanrodrigues em 30/10/2010 - 04:02h

Muito obrigado estava procurando um artigo desse você tirou minha duvida movendo para favoritos obrigado.

[4] Comentário enviado por doomk em 09/11/2010 - 15:27h

Muito Legal.

Acabei de concluir a configuração de um servidor de e-mail baseando em seu tutorial, funcionou que uma beleza.

E mais, juntei também com o tutorial do nosso grande amigo douglashx, que nos mostrou como fazer um cluster, baseando nas soluções Heartbeat + DRBD8 + OCFS2 + MONIT + LVS.

http://www.vivaolinux.com.br/artigo/Alta-disponibilidade-com-Debian-Lenny-+-Heartbeat-+-DRBD8-+-OCFS...

Enfim, após bater um pouco de cabeça, está configurado um servidor de e-mail Postfix + Postgree + Roundcube + Heartbeat + Drbd8 + Ocfs2.

Muito bom.

Obrigado mais uma vez pela sua dedicação na elaboração deste valioso tutorial.

[5] Comentário enviado por geraldoquites em 06/12/2010 - 11:23h

Bom dia "isoares" vou fazer a minha instalação geral usando o seu artigo. Estou usando o OpenSuse 11.3. Depois te dou retorno sobre as sequencias. Grande abraço, Geraldo.

[6] Comentário enviado por isoares em 06/12/2010 - 22:33h

Olá doomk!

Obrigado, procurei fazer o mais detalhado possível. A configuração que vc montou deve ter ficado ótima, sem comentários, hehehe!

Fico muito grato e mesmo incentivado a escrever novos tutoriais, com esse feedback da comunidade!

Um forte abraço!

Isaias.

[7] Comentário enviado por isoares em 06/12/2010 - 22:36h

Oi, Geraldo (geraldoquites)!

Bem, como você pode ver, esse tutorial foi elaborado para debian e derivados, mas creio que funcionará bem para outras distros também. Você vai ter, claro, que adaptar alguns passos, mas o esquema de configuração deve ser muito similar (se não idêntico), então, deve dar certo. Creio que o tutorial está detalhado o bastante para te permitir essa liberdade, com a plena compreensão dos passos que são necessários (configurações, autenticações, enfim). Fico aguardando pelo resultado! Boa sorte!

Um forte abraço!

Isaias.

[8] Comentário enviado por striteiro em 31/12/2010 - 09:39h

Bom dia, segui a risca o tutorial, instalei e configurei tudo como manda o artigo, porem quando tento logar via webmail, me retorna o seguinte erro: A ligacao com o servidor IMAP falhou!
Alguem tem uma luz ?

desde ja, agradeco!=D

[9] Comentário enviado por isoares em 05/01/2011 - 00:25h

Olá, striteiro!

Bem, você deve ficar atento a todas as recomendações do artigo. Esse tipo de erro que você menciona é percebido quando se faz os testes de autenticação, via telnet. O artigo menciona ainda a verificação dos erros nos logs (/var/log/syslog). Várias coisas podem dar errado, poste as mensagens, logs e o que mais puder.

Um forte abraço!

Isaias.

[10] Comentário enviado por andredemetriods em 04/03/2011 - 09:31h

Bom dia Amigo,

Cheguei até o passo:
Agora vamos criar o usuário postfix no postgre, com a mesma senha que colocamos no script:
# su - postgres
Quando dou este comando, o shell me retorna:
ID desconhecido : postgres
Tens idéia do que pode ter acontencido?

Att,

[11] Comentário enviado por isoares em 17/04/2011 - 20:16h

Olá, andredemetriods!

O usuário postgres é geralmente criado quando se instala o posgtres (pois ele é o usuário administrador do banco de dados). Se você instalou o Postgres e não possui esse usuário, das duas uma, ou seu usuário administrador está com outro nome, ou precisa reconfigurar o postgres novamente. Isso poderia ser feito com o gerenciador de pacotes, com o comando 'dpkg-reconfigure postgresql'.

Qualquer coisa, estou à disposição!
Um forte abraço!

Isaias

[12] Comentário enviado por alexandrehrs em 11/07/2011 - 10:41h

Na minha empresa uso o roudcube, porem presico remover o acesso webmail de alguns usuarios e não sei como fazer. Alguem pode me ajudar.

[13] Comentário enviado por isoares em 19/07/2011 - 09:49h

Oi, Alexandre! (alexandrehrs)

Bem, imagino que você esteja falando de usuários reais, cadastrados na máquina onde roda o servidor de email. Para conseguir isso, terá de trabalhar no sistema de autenticação, pois é esse sistema que libera o acesso ao sistema de e-mail.

Veja, se vc tiver usuários virtuais, é fácil, é só removê-los do banco de dados. Nesse caso, creio que, talvez, se você tiver muita experiência em autenticação, consiga isso. Eu não saberia como realizar essa tarefa, enfim, apenas uma idéia acerca disso. Você teria de criar um script de autenticação que permitisse todos, menos os usuários indesejados, um por um.Mas ao mesmo tempo, isso bloquearia também o acesso remoto do usuário à máquina. O fato de que o usuário seja um usuário real na máquina complica bastante as coisas. Na minha opinião, é mais fácil manter o servidor de e-mail em uma máquina separada, na qual esses usuários não tenham acesso, enfim. Desse modo, vc pode configurar do modo que descrevi e ter controle total de quem vai utilizar o sistema.

Um forte abraço!

Isaias.

[14] Comentário enviado por aldopassos em 27/10/2011 - 10:04h

Bom dia amigo, estou com um problema e queria ver se alguem pode me dar uma luz, estamos com um servidor instalado com debian e postifix rodando normalmente enviando e recebendo de todos os principais servidores de e-mail (TERRA, YAHOO, HOTMAIL) porém há um específico que não consegue nos enviar mensagens, este servidor eu sei que utiliza o EXCHANGE e sempre que nos enviam mensagens o e-mail volta deizendo que não foi possível realizar a entrega e no meu servidor ela nem aparece, nem sequer no mail.log...
Se puder me dar uma luz do que posso fazer para resoolver o problema... Muito obrigado por enquanto...

[15] Comentário enviado por rodrigo.a.sc em 18/11/2011 - 15:34h

Tenho uma grande duvida sobre o PostFix.

Como eu verifico o tamanho da conta de alguem ?
Crio uma conta via linha de comando?
faço o backup e o restore de uma caixa postal ??
Restarto apenas um serviço, tipo pop, smtp pois pelo zmcontrol so consigo restartar tudo de uma so vez até onde eu sei.

zmcontrol status
zmcontrol stop
zmcontrol start

so sei até ai.

Se alguem puder me dar um bizu ai eu fico grato!

[16] Comentário enviado por isoares em 29/11/2011 - 19:54h

Oi, aldopassos!

Então, difícil de dizer. Não entendo quando você diz que 'o servidor usa exchange', pois o uso do exchange, pelo que sei, utiliza um provedor de email para acesso. Pode ser um problema de configuração na máquina que está te enviando o email, pois, como você mesmo disse, nem aparece nos logs, ou seja, do meu ponto de vista, seu servidor parece estar ok, o indivíduo que está te enviando a mensagem é que tem que checar suas configurações, imagino.

Um forte abraço!

Isaias.

[17] Comentário enviado por isoares em 29/11/2011 - 21:12h

Oi, rodrigo.a.sc!

O 'tamanho da conta' é o tamanho do diretório que contém as mensagens do usuário.
Tenho um script para criar contas. Com ele dá para criar uma conta via linha de comando.
Eu criei uma mailbox 'template', que é um modelo do que eu queria (adicionei pasta de enviados
e tudo o que queria no roundcube), e a copio para a nova pasta do usuário. Tem um comando para
criar mailbox, que eu não cito aqui, mas que pode ser encontrado via google. Segue o script:

criar_usuario_virtual.sh:
---------------------------------------------------------------------------------------------------------------------
#!/bin/bash
# Script para criacao de usuarios virtuais para acesso ao webmail

#echo "[$1][$2]"

senha=""
if [[ ($1 != "") && ($2 != "") ]]; then
senha=$2
fi
if [[ "$1" == "" ]]; then
echo ""
echo "Sintaxe: ./criar_usuario_virtual.sh <login> <senha>"
echo ""
exit 1
fi

if [[ $senha == "" ]]; then
chave=`authpasswd`
else
chave=`echo "$senha"|authpasswd`
fi

chave=${chave//$/\\$}
login="$1"

echo "Tentando inserir usuario: [$login], chave: [$chave]">> /diretorio_mail_usuarios_virtuais/virtual.log

rsync -ar /diretorio_mail_usuarios_virtuais/template /diretorio_mail_usuarios_virtuais/$login

if [[ ! -d "/diretorio_mail_usuarios_virtuais/vusers/$login" ]]; then #Verifica se o diretório foi criado
echo "ERRO: Nao foi possivel criar o diretorio. Abortando.">> /diretorio_mail_usuarios_virtuais/virtual.log
exit 1
fi

chown -R postfix:postfix /diretorio_mail_usuarios_virtuais/$login

sql=`printf "INSERT INTO mailbox (username, password, name, maildir, quota, domain, created, modified, active) VALUES ('[email protected]', '$chave', ' ', '$login/', '0', ' ', current_timestamp, current_timestamp, '1');" `

comando=`printf "psql -d mail -c \"$sql\""`

result=`su -l usuario_autorizado_a_inserir_no_postgres -s /bin/bash -c "$comando"`

if [[ $result != "INSERT 0 1" ]]; then
echo "Falha na insercao do usuario no Postgres. Abortando.">>/diretorio_mail_usuarios_virtuais/virtual.log
exit 1
else
echo "Usuario [$login] inserido com sucesso."
echo "Usuario adicionado com sucesso: $login $senha $chave">>/root/virtuais.txt # grava um log
echo ""
fi
---------------------------------------------------------------------------------------------------------------------

E também tem um script para remover a conta (não apaga as mensagens, só remove do banco de dados. Claro,
pode ser modificado para fazer o que você desejar também:

apagar_usuario_virtual.sh:
---------------------------------------------------------------------------------------------------------------------
#!/bin/bash
# Script para apagar usuarios virtuais do acesso ao webmail

senha=""
if [[ ($1 != "") && ($2 != "") ]]; then
senha=$2
fi
if [[ "$1" == "" ]]; then
echo ""
echo "Sintaxe: ./apagar_usuario_virtual.sh <login>"
echo ""
exit 1
fi

login="$1"

echo "Tentando remover usuario: [$login]">> /diretorio_mail_usuarios_virtuais/virtual.log

sql=`printf "DELETE FROM mailbox WHERE maildir='$login/'"`

comando=`printf "psql -d mail -c \"$sql\""`

result=`su -l usuario_autorizado_a_inserir_no_postgres -s /bin/bash -c "$comando"`

if [[ $result != "DELETE 0 1" ]]; then
echo "Falha na insercao do usuario no Postgres. Abortando.">>/diretorio_mail_usuarios_virtuais/virtual.log
exit 1
else
echo "Usuario [$login] removido com sucesso."
echo "Usuario removido com sucesso: $login $senha $chave">>/root/virtuais.txt # grava um log
echo ""
fi
---------------------------------------------------------------------------------------------------------------------

Dá para fazer o backup e restore normalmente, como em qualquer diretório, se necessário.

Quanto aos serviços, é sempre bom reestartar tudo, para assegurar que as modificações estão valendo.

Ah, detalhes: os scripts são executados como root.

E é necessário configurar a conta de algum usuário para dar a ele acesso ao postgres, de inserção e remoção no banco de usuários virtuais.

Qualquer dúvida, estamos aí, é só perguntar.

Isaias.

[18] Comentário enviado por isoares em 26/12/2011 - 19:59h

Só esclarecendo: no contexto do artigo, um 'usuário virtual' é um usuário que está cadastrado no sistema de email, mas não tem uma 'conta real' na máquina, isto é, não tem uma área 'home', nem senha, nem poderia logar via ssh, por exemplo. Esse método aumenta bastante a segurança do servidor, uma vez que há menos brechas de segurança a serem exploradas. Os dados do usuário virtual são armazenados num banco de dados, e o sistema de autenticação realiza a consulta no banco, no caso, o Postgre, e então valida o acesso.

Um forte abraço a todos!

Isaias.

[19] Comentário enviado por JZG em 09/02/2012 - 10:30h

Bom dia,

estou tendo de instalar o servidor de email baseado em seu tutorial. Porém quando tento logar com 'useradmin' pelo comando #su useradmin é retornada a seguinte mensagem:
"unknown id: useradmin"

O usuário existe, quando fui cria-lo novamente me é enviada que "não é possivel executar a ação por que o usuário já existe".

O que pode ser?

[20] Comentário enviado por isoares em 10/02/2012 - 20:06h

Oi, JZG!

Não entendi bem a sua pergunta, poderia ser mais específico? Bem, o tutorial trata de usuários virtuais, então, esses usuários são criados no banco de dados (outro dia postei um script que faz isso). Esse sistema é justamente para evitar que usuários do email sejam usuários reais na máquina, criando posśiveis brechas de segurança.

Qualquer dúvida, posta novamente, que estamos aí..

Isaias.

[21] Comentário enviado por melorymonie em 21/03/2012 - 17:11h

Estou criando (tentando, pelo menos) um servidor de e-mail seguindo o seu tutorial, mas quando cheguei na parte de testar a conexão do imap me ocorreu o seguinte problema:
telnet 0 143
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2010 Double Precision, Inc. See COPYING for distribution information.
0 login [email protected] teste
* BYE [ALERT] Fatal error: No such file or directory: No such file or directory
Connection closed by foreign host

olhando no log ele encontra o usuário no banco de dados, tudo certinho, mas no final do log encontrei o seguinte erro:
Mar 21 16:47:26 webmail2 imapd: chdir user/: No such file or directory
Mar 21 16:47:26 webmail2 imapd: [email protected]: No such file or directory

Ai eu te pergunto, quando tenho que criar os maildirmake:
# maildirmake /home/postfix/Maildir/user
# maildirmake /home/postfix/Maildir/admin
# chown -R postfix:postfix /home/postfix

O meu usuário postfix tem que ter uma área de home?
Ou devo criar os diretórios em /var/users?

***************************************************
Segunda questão:
Quando testo o segundo telnet, me ocorre o seguinte erro:
telnet teste.br 110
telnet: could not resolve teste.br/110: Name or service not known

Você saberia me dizer porque isso ocorre?
Estou utilizando uma máquina virtual para realizar os testes, não tendo um IP real para isso, pode ter alguma coisa haver?

Obrigado e parabéns pelo post.


[22] Comentário enviado por isoares em 11/11/2012 - 21:41h

Olá, melorymonie!!

Me desculpe pelo atraso na resposta, espero não ocorrer novamente... é provável que você já tenha resolvido o problema, mas estou postando aqui em respeito ao seu questionamento e aos demais usuários.
Bem, sim, criei o /home/postfix para o usuário postfix como se fosse um usuário normal, e dei permissões para ele para escrever na minha pasta de usuários virtuais, a qual chamei, no meu sistema, de vusers, e onde postei todos os diretórios de emails deles. Também criei um template de diretório de email (simplesmente copio um diretório personalizado, inicialmente criado pelo maildirmake), de modo que quando vou adicionar um usuário, o script faz todo o serviço.

Uma observação que gostaria de ponderar é que o roundcube já está numa versão posterior à que eu utilizei para fazer esse tutorial, de modo que não estou certo se todos os passos aqui são válidos para a versão atual, embora, a princípio, devam funcionar.

Quanto à falha do telnet, eu não saberia te dizer, se obteve a solução poste aqui para compartilhar conosco.

Um forte abraço e sou em quem agradece a oportunidade de ser útil.

Isaias.

[23] Comentário enviado por ttelsen em 23/11/2012 - 11:44h

Estou empacado no mesmo ponto do melorynie
Pois quando dou o comando

# maildirmake /home/postfix/Maildir/user
# maildirmake /home/postfix/Maildir/admin

ele da o retorno: maildirmake: /home/postfix/Maildir/user: No such file or directory
Detalhe, eu criei o usuario "user" e "admin", porém eles nao tem a pasta /home - criei com o comando "useradd user" depois "passwd user" somente.

Alguém pode me ajudar?

[24] Comentário enviado por ttelsen em 23/11/2012 - 19:58h

Fiz o seguinte. criei as pastas
home/postfix/Maildir/ e depois dei um maildirmake user
home/postfix/Maildir/ e depois dei um maildirmake admin
ai o maildirmake criou as pastas cur, new, tmp para cada usuario.

depois criei a pasta /var/vusers e dei um chown postfix /var/vusers/

Será que está certo?

[25] Comentário enviado por isoares em 23/11/2012 - 22:12h

Oi, ttelsen!

Você teve também problemas de conexão com o telnet? Está instalando em máquina virtual ou real?

Então, no meu sistema, eu criei o usuário postfix como usuário real da máquina, e, sim, dei permissões de escrita na /var/vusers. Depois, com maildirmake, criei um 'diretório template' (/diretorio_mail_usuarios_virtuais/template), para ser copiado/reproduzido toda vez que eu quisesse criar um novo usuário (para isso, criei também os scripts criar_usuario_virtual.sh e apagar_usuario_virtual.sh, que postei acima). Nesses scripts, a string 'diretorio_mail_usuarios_virtuais' deveria ser substituída pelo seu diretório personalizado de mails de usuários, no caso, '/var/vusers'.

Salvo engano, eu também tive esse problema, mas esqueci de comentar no tutorial. E, se me lembro bem, o resolvi quando criei um usuário real para o postfix (faz tempo que fiz o procedimento, então pode ser que algum detalhe tenha escapado, embora o artigo tenha sido escrito no ato, logo após a instalação, dadas as dificuldades que encontrei).

Outra coisa importante, no meu sistema, executo os scripts criar_usuario_virtual.sh e apagar_usuario_virtual.sh como root, devido às permissões dos diretórios, que são variadas, e o script está projetado para ajustá-las automaticamente. Talvez seja necessário, dependendo da configuração do seu sistema, revisar esses scripts e ajustá-los ao seu sistema. E vale a pena utilizá-los, pois poupam muito do trabalho chato de adicionar/remover usuários virtuais.

Uma vez instalado e adicionados os usuários, é o postfix quem acessa, lê e escreve nos diretórios, portanto o acesso e permissões devem ser dele.
Qualquer dúvida, posta aí! E se resolver o problema, também, inclusive, com detalhes da solução.

Um forte abraço!

Isaias.

[26] Comentário enviado por cainf em 29/04/2013 - 22:43h

Uma dúvida sobre infra

1- Funcionaria usando um link ADSL ?

2 -Preciso pedir para configurar o DNS Reverso com a minha operadora para evitar que os emails se percam quando enviarem para mim ?

Desde ja agradeço

[27] Comentário enviado por isoares em 02/09/2013 - 12:52h

Oi, cainf!

Então, não vejo problema em funcionar com adsl... mas, para facilitar a manutenção, sugiro a contratação de um serviço de servidor virtual. Eu uso o linode.com, é barato, prático e eficaz. Na configuração do meu domínio, ajustei sim o DNS reverso. Já tive servidor em casa, mas o custo não vale. Sem contar que tem que ter no-break, quando vc viaja tem de ficar atento para a máquina não cair, não vale a pena.

Um grande abraço.

Isaias.

[28] Comentário enviado por igorocampos em 10/01/2015 - 18:29h


olá Isaias, muito bom o tutorial, mas estou com um probleminha...

Aparentemente nao consigo autenticar no imap... da sempre senha invalida... olhei nos arquivos de log e aparentemente é problema de digitar a senha errada (mas nao estou digitando errado) suspeito que seja alguma coisa relacionada a criptografia na comparacao da senha digitada com o que esta no postgre...

Uma coisa engraçada é que quando uso o authpasswd ele sempre gera uma senha criptografada DIFERENTE, mesmo eu tendo digitado a mesma senha sempre...

O que pode estar acontecendo?
Teria algum jeito de tirar a criptografia da senha somente para testar se é esse o problema?

Agradeço muito a ajuda

[29] Comentário enviado por isoares em 11/01/2015 - 10:09h

Oi, igorocampos.

Quando eu estava testando, também tive a mesma impressão. Primeiramente, instale o imap 'básico', e tente autenticar como UM USUÁRIO REAL. Isso porque, a autenticação como usuário virtual depende de que os scripts de configuração já estejam nas pastas, o servidor já deve ter sido reinicializado, e que não haja error nas variáveis que o leitor tem de atribuir (senha, hostname, etc.). Por isso recomendo o teste 'básico'. Se ele não funcionar, vc terá de pesquisar e fazer o imap funcionar, verificando sempre o arquivo de log, que dá excelentes pistas sobre o problema.
Não sei te há diferenças entre as distribuições linux (qual vc usa?), mas vc deve ficar atento a isso tb.
Com o imap funcionando de modo básico, daí vc parte para a configuração usando os scripts de autenticação que coloquei no texto. Perceba que esses scripts usam uma pesquisa no banco de dados para liberar o acesso dos usuários virtuais ao sistema de email, que nunca conseguirão autenticarem-se via ssh, por exemplo. Por isso esse esquema confere mais segurança ao seu sistema.
Se tentar e não conseguir, posta aí a configuração do seu sistema operacional e parte dos logs para a gente ver.

Abração!

Isaias

[30] Comentário enviado por igorocampos em 15/01/2015 - 14:26h

utilizo o ubuntu mesmo. Como assim instalar o imap basico? no caso, como eu reverteria tudo que ja fiz? to meio perdido...
Na tela do telnet aparece "NO login failed"
e no arquivo de log aparece assim:
Jan 15 11:24:11 mega imapd: LOGIN FAILED, [email protected], ip=[::ffff:127.0.0.1]

tem certeza que essa criptografia deveria mudar sempre que executo o authpasswd?

To meio desesperado pq tenho q fazer esses emails funcionando até o fim do mes... Coloquei no google apps por enquanto, mas é só 30 dias trial...
teria como me ensinar tipo um passo a passo para eu saber o que estou fazendo de errado?

Muito obrigado pela sua ajuda e atenção!



[31] Comentário enviado por akasuna em 21/01/2016 - 16:15h

Boa tarde,

Como uma grande maioria, dei uma travada na autenticação IMAP.
Estava tudo indo como os conformes, porém ao chegar nesta parte, me ocorre um erro no qual estou sem ideia do que possa ser.
Postarei em breve os logs onde reporta o erro para caso alguem ja tenha resolvido algo parecido possa me ajudar.

Até breve.

[32] Comentário enviado por jean6758144 em 14/10/2016 - 19:11h

Prezados (as),

Necessito de ajuda referente a servidores de e-mail, instalei os seguintes recursos em meu servidor Debian 8 X64 pela digital Ocena, e DNS apontando para o Cloudflare PHP5 com FastCGI e Xcache, MySQL, phpMyAdmin, Clamav, Amavis e SpamAssassin, PureFTPd e Quota, BIND9, OpenSSH, JailKit (chroot), RKHunter, Servidor de Emails com Postfix e Dovecot, Roundcube, Bastille Firewall com IPTables e Fail2ban.

Portanto não consigo nem enviar e receber email. Segue abaixo as informações do log de e-mail que possuo, segue os links para acessar. Preciso de ajuda.

TABELA DNS CLOUDFLARE =======> https://uploaddeimagens.com.br/imagens/prtscr_capture-jpg--12
TABELA DNS CLOUDFLARE =======> https://uploaddeimagens.com.br/imagens/prtscr_capture_2-jpg--2
Log de Email === >>>> https://drive.google.com/open?id=0B9z5uOU4lczmOHFyWkJ0THJWZnM

Agradeço a colaboração de todos.


PREROUTING ACCEPT [640048:482857312]
:INPUT ACCEPT [640048:482857312]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [443900:125193766]
:POSTROUTING ACCEPT [443870:125191586]
COMMIT
# Completed on Fri Oct 14 17:15:25 2016
# Generated by iptables-save v1.4.21 on Fri Oct 14 17:15:25 2016
*nat
:PREROUTING ACCEPT [16380:902043]
:INPUT ACCEPT [11510:626523]
:OUTPUT ACCEPT [15163:984414]
:POSTROUTING ACCEPT [15128:981870]
COMMIT
# Completed on Fri Oct 14 17:15:25 2016
# Generated by iptables-save v1.4.21 on Fri Oct 14 17:15:25 2016
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [52777:4697686]
:INT_IN - [0:0]
:INT_OUT - [0:0]
:PAROLE - [0:0]
:PUB_IN - [0:0]
:PUB_OUT - [0:0]
:fail2ban-dovecot-pop3imap - [0:0]
-A INPUT -p tcp -m multiport --dports 110,995,143,993 -j fail2ban-dovecot-pop3imap
-A INPUT -d 127.0.0.0/8 ! -i lo -p tcp -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 224.0.0.0/4 -j DROP
-A INPUT -i eth+ -j PUB_IN
-A INPUT -i ppp+ -j PUB_IN
-A INPUT -i slip+ -j PUB_IN
-A INPUT -i venet+ -j PUB_IN
-A INPUT -i bond+ -j PUB_IN
-A INPUT -i en+ -j PUB_IN
-A INPUT -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j DROP
-A OUTPUT -o eth+ -j PUB_OUT
-A OUTPUT -o ppp+ -j PUB_OUT
-A OUTPUT -o slip+ -j PUB_OUT
-A OUTPUT -o venet+ -j PUB_OUT
-A OUTPUT -o bond+ -j PUB_OUT
-A OUTPUT -o en+ -j PUB_OUT
-A INT_IN -p icmp -j ACCEPT
-A INT_IN -j DROP
-A INT_OUT -p icmp -j ACCEPT
-A INT_OUT -j ACCEPT
-A PAROLE -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A PUB_IN -p tcp -m tcp --dport 20 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 21 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 22 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 25 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 53 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 80 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 110 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 143 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 443 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 587 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 993 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 995 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 3306 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 8080 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 8081 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 10000 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 40110:40210 -j PAROLE
-A PUB_IN -p udp -m udp --dport 53 -j ACCEPT
-A PUB_IN -p udp -m udp --dport 3306 -j ACCEPT
-A PUB_IN -p icmp -j DROP
-A PUB_IN -j DROP
-A PUB_OUT -j ACCEPT
-A fail2ban-dovecot-pop3imap -j RETURN
COMMIT


Contribuir com comentário