Empresas que terceirizam o servidor de e-mail tem algumas dificuldades de implantarem um maior controle em relação ao e-mail. Com o Mailsnarf é possível ter uma cópia de todos os e-mails que são enviados ou recebidos e posteriormente baixá-los em seu gerenciador de e-mails.
Como o mailsnarf imprime em tela todo os e-mails, é possível que redirecione todo a sua saída para um único arquivo.
# mailsnarf -i eth1 > /path/arquivo
Isto é bom para que você possa manter um histórico sobre os e-mails enviados e recebidos em sua rede.
O problema disto que é todos os e-mails estarão em um único arquivo e dependendo do tamanho da rede, este arquivo ficará grande e será difícil analisá-lo.
Outro problema são os anexos, não haverá como visualizá-los, pois estarão em formato caractere no arquivo e dificultarão a verificação dos e-mails.
O problema
Temos todos os e-mails em um único arquivo. A leitura destes e-mails é muito difícil, primeiro pelo seu tamanho, e depois por que todos os e-mails estão nos fontes.
Há a necessidade de se melhorar isto. Pesquisando soluções na internet, encontrei comentários sobre direcionar o arquivo para um diretório de pop e fazer o download via gerenciador de e-mail, ou visualizá-los em um webmail.
O problema é como dividir estes e-mails em arquivos separados e salvá-los no diretório de e-mail do usuário desejado.
Solução
Para resolver este problema é usado a liberdade oferecida pelo Código Aberto. Pegamos o fonte e alteramos o programa para a situação que nós precisamos.
[2] Comentário enviado por mafioso em 14/02/2007 - 17:05h
gcc -g -O2 -D_BSD_SOURCE -D_BSD_SOURCE -D__BSD_SOURCE -D__FAVOR_BSD -DHAVE_NET_ETHERNET_H -DDSNIFF_LIBDIR=\"/usr/local/lib/\" -I. -I/usr/local/include -I/usr/local/ssl/include -I/usr/X11R6/include -I./missing -c ./arpspoof.c
./arpspoof.c: In function `arp_send':
./arpspoof.c:49: warning: passing arg 1 of `libnet_get_hwaddr' from incompatible pointer type
./arpspoof.c:49: error: too many arguments to function `libnet_get_hwaddr'
./arpspoof.c:60: warning: passing arg 6 of `libnet_build_ethernet' from incompatible pointer type
./arpspoof.c:60: error: too few arguments to function `libnet_build_ethernet'
./arpspoof.c:64: error: `ETH_H' undeclared (first use in this function)
./arpspoof.c:64: error: (Each undeclared identifier is reported only once
./arpspoof.c:64: error: for each function it appears in.)
./arpspoof.c:64: error: too few arguments to function `libnet_build_arp'
./arpspoof.c: In function `main':
./arpspoof.c:181: warning: assignment makes pointer from integer without a cast
make: *** [arpspoof.o] Error 1
Eu havia instalado todas as dependências e o "configure" identificou todas as biblioteca e validou o sistema para instalação.
[3] Comentário enviado por y2h4ck em 14/02/2007 - 17:53h
Acho que o mailsnarf é muito limitado.
Existem maneiras profissionais de configurar um MTA como por exemplo, postfix a encaminhar uma copia de todo email que sai para uma conta por exemplo:
[4] Comentário enviado por removido em 17/02/2007 - 20:17h
Respondendo a y2h4ck
Concordo com vc, mas isso não é uma proeza apenas do postfix, qualquer MTA que se preze tem controle de auditoria, qmail, postfix, etc.
Mas como nosso amigo edson disse em seu artigo, isso é uma solução para empresas que não tem acesso ao servidor de e-mail. Um exemplo pra vc, para o QMAIL fazer essa auditoria é necessário sua recompilação e um servidor que cuida de muitos dominios, fica complicado.
"Empresas que terceirizam o servidor de e-mail, tem algumas dificuldades de implantarem um maior controle em relação ao e-mail."
[8] Comentário enviado por ifc0nfig em 19/04/2007 - 16:42h
Gostaria de saber se eu poderia usar algum dominio de fora por que aqui meus usuarios usam muito o gmail e hotmail tem como eu fazer essa captura pelo meu servidor de internet (Gateway), para esses dominios??
[9] Comentário enviado por edmafer em 19/04/2007 - 21:10h
Não, pois o programa captura e-mails enviados por um gerenciador de e-mail.
O Acesso ao gmail e ao hotmail geralmente são feitos pela web. Para capturar este tipo de informação seria necessário outro sniffer. No pacote dsniff tem um que captura as páginas acessadas, ai você teria que fazer o tratamento para não ficar lendo código.
Mas se eles acessarem por https, esquece, pois estará criptografado.
[11] Comentário enviado por ifc0nfig em 19/07/2007 - 16:54h
Eu tenho um postfix instalado aqui e to querendo fazer as capturas de entrada e saida dos meus usuarios na rede. Tanto os enviados como os recebidos tem como fazer pelo postfix isso ou só com o Mailsnarf.
[13] Comentário enviado por angkor em 21/01/2008 - 14:48h
Estou com o mesmo problema do mafioso:
gcc -g -O2 -D_BSD_SOURCE -D_BSD_SOURCE -D__BSD_SOURCE -D__FAVOR_BSD -DHAVE_NET_ETHERNET_H -DDSNIFF_LIBDIR=\"/usr/local/lib/\" -I. -I./missing -c ./arpspoof.c
./arpspoof.c: In function âarp_sendâ:
./arpspoof.c:49: warning: passing argument 1 of âlibnet_get_hwaddrâ from incompatible pointer type
./arpspoof.c:49: error: too many arguments to function âlibnet_get_hwaddrâ
./arpspoof.c:60: warning: passing argument 6 of âlibnet_build_ethernetâ from incompatible pointer type
./arpspoof.c:60: error: too few arguments to function âlibnet_build_ethernetâ
./arpspoof.c:64: error: âETH_Hâ undeclared (first use in this function)
./arpspoof.c:64: error: (Each undeclared identifier is reported only once
./arpspoof.c:64: error: for each function it appears in.)
./arpspoof.c:64: error: too few arguments to function âlibnet_build_arpâ
./arpspoof.c: In function âmainâ:
./arpspoof.c:181: warning: assignment makes pointer from integer without a cast
make: ** [arpspoof.o] Erro 1
Alguem pode ajudar?
antecipadamente agradeço
angkor
[14] Comentário enviado por eliasricardo em 25/04/2008 - 13:12h
Pessoal, também estou tendo memos problema do angkor e mafioso.
gcc -g -O2 -D_BSD_SOURCE -D_BSD_SOURCE -D__BSD_SOURCE -D__FAVOR_BSD -DHAVE_NET_ETHERNET_H -DDSNIFF_LIBDIR=\"/usr/local/lib/\" -I. -I./missing -c ./arpspoof.c
./arpspoof.c: In function âarp_sendâ:
./arpspoof.c:51: warning: passing argument 1 of âlibnet_get_hwaddrâ from incompatible pointer type
./arpspoof.c:51: error: too many arguments to function âlibnet_get_hwaddrâ
./arpspoof.c:62: warning: passing argument 6 of âlibnet_build_ethernetâ from incompatible pointer type
./arpspoof.c:62: error: too few arguments to function âlibnet_build_ethernetâ
./arpspoof.c:66: error: âETH_Hâ undeclared (first use in this function)
./arpspoof.c:66: error: (Each undeclared identifier is reported only once
./arpspoof.c:66: error: for each function it appears in.)
./arpspoof.c:66: error: too few arguments to function âlibnet_build_arpâ
./arpspoof.c: In function âmainâ:
./arpspoof.c:185: warning: assignment makes pointer from integer without a cast
make: *** [arpspoof.o] Error 1
Procurei em vários lugares e ainda não achei a solução, se alguem puder dar uma força.
[15] Comentário enviado por aldemar.moreira em 09/05/2008 - 17:15h
cc -g -O2 -D_BSD_SOURCE -D_BSD_SOURCE -D__BSD_SOURCE -D__FAVOR_BSD -DHAVE_NET_ETHERNET_H -DDSNIFF_LIBDIR=\"/usr/local/lib/\" -I. -I/usr/local/include -I/usr/local/ssl/include -I/usr/X11R6/include -I./missing -c ./arpspoof.c
./arpspoof.c: In function `arp_send':
./arpspoof.c:49: warning: passing arg 1 of `libnet_get_hwaddr' from incompatible pointer type
./arpspoof.c:49: error: too many arguments to function `libnet_get_hwaddr'
./arpspoof.c:60: warning: passing arg 6 of `libnet_build_ethernet' from incompatible pointer type
./arpspoof.c:60: error: too few arguments to function `libnet_build_ethernet'
./arpspoof.c:64: error: `ETH_H' undeclared (first use in this function)
./arpspoof.c:64: error: (Each undeclared identifier is reported only once
./arpspoof.c:64: error: for each function it appears in.)
./arpspoof.c:64: error: too few arguments to function `libnet_build_arp'
./arpspoof.c: In function `main':
./arpspoof.c:181: warning: assignment makes pointer from integer without a cast
make: *** [arpspoof.o] Error 1
alguem já resolveu isso????
[16] Comentário enviado por guilhermerezende em 14/07/2008 - 17:44h
Pessoal, estou com esse mesmo problema conforme os amigos também. Está dificil de resolver e na verdade achei que fosse problema de incompatibilidade de versão da libnet, mas tbm só consegui instalar a mesma de pacotes pré-compilados e não consegui compilar uma versão se quer da libnet. Ja instalei pacotes pré compilados da série 1.0 e 1.1 e com os dois o erro continua.
Alguém ja conseguiu solução p/ isso ?!?!
Abs..
cc -g -O2 -D_BSD_SOURCE -D_BSD_SOURCE -D__BSD_SOURCE -D__FAVOR_BSD -DHAVE_NET_ETHERNET_H -DDSNIFF_LIBDIR=\"/usr/local/lib/\" -I. -I/usr/local/include -I/usr/local/ssl/include -I/usr/X11R6/include -I./missing -c ./arpspoof.c
./arpspoof.c: In function `arp_send':
./arpspoof.c:49: warning: passing arg 1 of `libnet_get_hwaddr' from incompatible pointer type
./arpspoof.c:49: error: too many arguments to function `libnet_get_hwaddr'
./arpspoof.c:60: warning: passing arg 6 of `libnet_build_ethernet' from incompatible pointer type
./arpspoof.c:60: error: too few arguments to function `libnet_build_ethernet'
./arpspoof.c:64: error: `ETH_H' undeclared (first use in this function)
./arpspoof.c:64: error: (Each undeclared identifier is reported only once
./arpspoof.c:64: error: for each function it appears in.)
./arpspoof.c:64: error: too few arguments to function `libnet_build_arp'
./arpspoof.c: In function `main':
./arpspoof.c:181: warning: assignment makes pointer from integer without a cast
make: *** [arpspoof.o] Error 1
[17] Comentário enviado por eliasricardo em 30/10/2008 - 14:49h
Galera, resolvi o problema acima, porém estou com outro.
Removi a biblioteca libnet que estava na versão 1 e instalei a versao zero, libnet0, embora ela esteja absoleta, a compilação passou legal. Agora estou com erro em outra parte.
./sshcrypto.c:26: error: field âkeyâ has incomplete type
./sshcrypto.c:28: warning: useless storage class specifier in empty declaration
./sshcrypto.c:32: error: expected specifier-qualifier-list before âdes_key_scheduleâ
./sshcrypto.c:34: warning: useless storage class specifier in empty declaration
./sshcrypto.c: In function âblowfish_encryptâ:
./sshcrypto.c:133: error: âBF_ENCRYPTâ undeclared (first use in this function)
./sshcrypto.c:133: error: (Each undeclared identifier is reported only once
./sshcrypto.c:133: error: for each function it appears in.)
./sshcrypto.c: In function âblowfish_decryptâ:
./sshcrypto.c:145: error: âBF_DECRYPTâ undeclared (first use in this function)
./sshcrypto.c: In function âdes3_initâ:
./sshcrypto.c:158: error: âstruct des3_stateâ has no member named âk1â
./sshcrypto.c:159: error: âstruct des3_stateâ has no member named âk2â
./sshcrypto.c:162: error: âstruct des3_stateâ has no member named âk3â
./sshcrypto.c:164: error: âstruct des3_stateâ has no member named âk3â
./sshcrypto.c:166: error: âstruct des3_stateâ has no member named âiv1â
./sshcrypto.c:167: error: âstruct des3_stateâ has no member named âiv2â
./sshcrypto.c:168: error: âstruct des3_stateâ has no member named âiv3â
./sshcrypto.c: In function âdes3_encryptâ:
./sshcrypto.c:178: error: âstruct des3_stateâ has no member named âiv1â
./sshcrypto.c:178: error: âstruct des3_stateâ has no member named âiv2â
./sshcrypto.c:180: error: âstruct des3_stateâ has no member named âk1â
./sshcrypto.c:180: error: âstruct des3_stateâ has no member named âiv1â
./sshcrypto.c:180: error: âDES_ENCRYPTâ undeclared (first use in this function)
./sshcrypto.c:181: error: âstruct des3_stateâ has no member named âk2â
./sshcrypto.c:181: error: âstruct des3_stateâ has no member named âiv2â
./sshcrypto.c:181: error: âDES_DECRYPTâ undeclared (first use in this function)
./sshcrypto.c:182: error: âstruct des3_stateâ has no member named âk3â
./sshcrypto.c:182: error: âstruct des3_stateâ has no member named âiv3â
./sshcrypto.c: In function âdes3_decryptâ:
./sshcrypto.c:191: error: âstruct des3_stateâ has no member named âiv1â
./sshcrypto.c:191: error: âstruct des3_stateâ has no member named âiv2â
./sshcrypto.c:193: error: âstruct des3_stateâ has no member named âk3â
./sshcrypto.c:193: error: âstruct des3_stateâ has no member named âiv3â
./sshcrypto.c:193: error: âDES_DECRYPTâ undeclared (first use in this function)
./sshcrypto.c:194: error: âstruct des3_stateâ has no member named âk2â
./sshcrypto.c:194: error: âstruct des3_stateâ has no member named âiv2â
./sshcrypto.c:194: error: âDES_ENCRYPTâ undeclared (first use in this function)
./sshcrypto.c:195: error: âstruct des3_stateâ has no member named âk1â
./sshcrypto.c:195: error: âstruct des3_stateâ has no member named âiv1â
make: *** [sshcrypto.o] Error 1
Sei que trata-se de erro na declaração da variável dentro da estrutura, mais estou meio garrado, alguem poderia dar uma força?