A instalação do pacote fetchmail permite a descarga de emails alojados em servidores externos para o nosso servidor local. O fetchmail suporta vários protocolos de acesso e esquemas de autenticação.
root@server:~# apt install fetchmail
A configuração será definida por utilizador, e consiste na criação do ficheiro de configuração do fetchmail e na criação de uma tarefa periódica que execute o fetchmail para a recolha dos emails.
Para a configuração do fechmail cada utilizador deverá criar na sua home um ficheiro .fetchmailrc.
Por exemplo, o utilizador fribeiro deverá guardar a sua configuração pessoal para o fetchmail em /home/fribeiro/.fetchmailrc:
poll pop.gmail.com proto pop3 user "pinguim.ribeiro" pass "MyPassword" is "fribeiro@home.lan" options ssl keep
Neste exemplo, o fetchmail irá descarregar o email do utilizador pinguim.ribeiro do servidor pop.gmail.com, utilizando o protocolo pop3 e uma ligação ssl e reencaminha-o para o utilizador fribeiro@home.lan.
A opção keep
mantém as mensagens no servidor, o que é útil em fase de testes. Posteriormente, essa opção poderá ser retirada. Com alguns servidores pop3, é necessário acrescentar a opção uidl
, que força o lado cliente a manter uma lista das mensagens já descarregadas e que garante que apenas as novas mensagens serão descarregadas.
Por segurança, uma vez que o ficheiro contém passwords, este só deve ser acessível ao próprio utilizador:
fribeiro@server:~$ chmod 600 .fetchmailrc
Em seguida, deverá ser criada uma tarefa periódica para execução do fetchmail. Para tal editamos o ficheiro de tarefas agendadas do utilizador:
fribeiro@server:~$ crontab -e
E, em seguida, agendamos a execução do fetchmail a cada 5 minutos, por exemplo:
# Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any').# # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command */5 * * * * /usr/bin/fetchmail &> /dev/null
É possível verificar a execução do fetchmail, com o comando fetchmail -v
:
fribeiro@server:~$ fetchmail -v fetchmail: 6.3.21 querying pop.gmail.com (protocol POP3) at Sun 26 Apr 2015 08:50:06 PM WEST: poll started Trying to connect to 173.194.67.108/995...connected. fetchmail: Server certificate: fetchmail: Issuer Organization: Google Inc fetchmail: Issuer CommonName: Google Internet Authority fetchmail: Subject CommonName: pop.gmail.com fetchmail: Subject Alternative Name: pop.gmail.com fetchmail: pop.gmail.com key fingerprint: 55:2B:58:4A:12:14:4F:98:1A:E6:C8:A4:08:40:0D:55 fetchmail: POP3< +OK Gpop ready for requests from 89.152.78.77 gc1pf13823368wic.15 fetchmail: POP3> CAPA fetchmail: POP3< +OK Capability list follows fetchmail: POP3< USER fetchmail: POP3< RESP-CODES fetchmail: POP3< EXPIRE 0 fetchmail: POP3< LOGIN-DELAY 300 fetchmail: POP3< TOP fetchmail: POP3< UIDL fetchmail: POP3< X-GOOGLE-VERHOEVEN fetchmail: POP3< X-GOOGLE-RICO fetchmail: POP3< . fetchmail: POP3> USER pinguim.ribeiro fetchmail: POP3< +OK send PASS fetchmail: POP3> PASS * fetchmail: POP3< +OK Welcome. fetchmail: POP3> STAT fetchmail: POP3< +OK 0 0 fetchmail: No mail for pinguim.ribeiro at pop.gmail.com fetchmail: POP3> QUIT fetchmail: POP3< +OK Farewell. fetchmail: 6.3.21 querying pop.gmail.com (protocol POP3) at Sun 26 Apr 2015 08:50:08 PM WEST: poll completed fetchmail: normal termination, status 1