Muitas vezes precisamos acessar nossas máquinas remotamente (via SSH principalmente), mas como aqui no Brasil os IPs estáticos são absurdamente caros e os dinâmicos podem facilmente mudar: perda de sinal do modem, falta de energia, problemas no provedor de acesso... precisamos de algum modo simples e transparente de obtê-lo.
É eu sei, existem o NoIP e o DynDNS, mas esta mesma solução pode resolver outros problemas para outros usuários, que não consigo prever. Então, mãos à obra pessoal.
Nossa tarefa será dividida em 3 partes:
- Instalar e configurar o msmtp para enviar e-mails pelo gmail;
- Criar um script para obter o último IP informado pelo gmail;
- Criar um script para ser executado pelo boot e pelo cron.
1. Enviando e-mails: msmtp
O
msmtp é um cliente capaz de enviar e-mails para qualquer servidor SMTP, é um bom substituto simplificado para o sendmail.
Sua documentação pode ser lida aqui:
O código-fonte pode ser baixado aqui:
Instalação:
wget http://downloads.sourceforge.net/project/msmtp/msmtp/1.4.21/msmtp-1.4.21.tar.bz2
tar xjvf msmtp-1.4.21.tar.bz2
$ cd msmtp-1.4.21
$ ./configure
$ make
# make install
Se você estiver no Debian ou algum variante rode:
sudo apt-get install `apt-cache search msmtp | awk '{print $1}'`
Para configurar o msmtp eu me baseei neste
ótimo artigo do Andrew's Corner.
Como agora o Gmail só permite POP e SMTP via conexão SSL, precisaremos gerar dois certificados PEM (Privacy-enhanced Electronic Mail). Vamos lá!
1.1. Gerando os certificados PEM
O Andrew criou um script em Perl para gerarmos localmente os certificados e só me levou meia hora para configurar todos os módulos que o Perl necessitava. Então, por caridade, pus o código abaixo, é só copiar e colar:
mkdir -pv $HOME/.certs && cat > $HOME/.certs/Equifax_Secure_CA.pem << FIM
-----BEGIN CERTIFICATE-----
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
70+sB3c4
-----END CERTIFICATE-----
FIM
cat > $HOME/.certs/Thawte_Premium_Server_CA.pem << FIM
-----BEGIN CERTIFICATE-----
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
UCemDaYj+bvLpgcUQg==
-----END CERTIFICATE-----
FIM
Hora de dizer ao openssl que temos os certificados:
c_rehash $HOME/.certs/
OK, tudo pronto para configurar o .msmtprc.
1.2. Configurando o .msmtprc
Bom, criados os certificados, é hora de fazer nosso arquivo de configuração.
Para evitar confusão entre o que é variável, função, comando e dados a serem preenchidos, o arquivo será configurado para o Zé abaixo. Mude para seus próprios dados. Eis, aí o Zé:
- Endereço no gmail: zeh@gmail.com
- Senha do gmail: 53nH*
- USER: zeh
- HOSTNAME: NAVI
E seu arquivo de configuração:
touch $HOME/.msmtprc && chmod 600 $HOME/.msmtprc && cat > $HOME/.msmtprc << FIM
account default
host smtp.gmail.com
port 587
from zeh@gmail.com
tls on
tls_starttls on
#tls_trust_file /home/zeh/.certs/Thawte_Premium_Server_CA.pem
tls_trust_file /home/zeh/.certs/Equifax_Secure_CA.pem
auth on
user zeh@gmail.com
password 53nH*
logfile ~/.msmtp.log
FIM
Note que o chmod é muito importante, já que não queremos que outros usuários possam ler nossa senha. Vamos testar para ver se deu tudo certo:
echo -e "Subject: Teste 1
Can you read me?" | msmtp zeh@gmail.com
Veja em sua caixa de entrada se o e-mail chegou. Em casa ele leva menos de 5 segundos para enviar o e-mail.
Agora que já podemos enviar os e-mails, vamos ver como lê-los.