Servidor da Família


Introdução 

Este documento contém todos os dados do servidor da nossa família, assim como dos nossos backups (que estão obviamente associados ao servidor).

História e backgroud

O nosso servidor sempre foi, desde há muitos anos, um Mac a correr macOS e o pacote Server da Apple, só que em 2018 a Apple modificou este pacote, tirando os serviços todos que nos interessavam. 
Assim, tive de procurar uma solução simples de gerir (criar uma máquina macOS ou Linux com todos os serviços geridos por configurações em ficheiros de texto é muito bonito, mas não tenho tempo para aprender e gerir essa situação), que recaiu sobre um NAS da Synology. A solução óbvia alternativa seria usar serviços de um grande fornecedor (Apple ou Google); por motivos de privacidade, e também de saber trabalhar com estes serviços (e coisas associadas tipo IP fixo, DNS e config do router), decidi usar um servidor na nossa rede.
Tive um NAS QNAP TS-220 que não me servia para estes serviços todos que eu queria. Era para meter no OLX.pt mas vendi-o ao Victor Fontela.
O NAS que eu escolhi foi um Synology DS-218+ porque dava para configurar como servidor de Mail (os mais baratos não davam). Comprado na PCDiga em promoção por 300€ (preço normal 350€). 
Usei o disco Toshiba P300 de 2TB que já tinha no outro NAS e um Seagate Barracuda de 2TB de uma caixa externa que já tinha. Tinha outro Baracuda de 2TB no NAS antigo da QNAP, que tem problemas, e meti-o na caixa para backups OFFSITE.

Serviços:

  • Ficheiros via SMB+VPN e via Web
  • Photos via Website
  • Música via Website
  • MariaDB (base de dados)
  • Websites (blogs, Intellego, outros)
  • Calendário e Contactos
  • Notas estilo Dropbox Paper ??
  • Git

Ainda por configurar:

  • VPN
  • Mail – só  falta mudar o port forwarding no Router e testar; espero contacto da NOWO para configurarem o reverse DNS.

Configuração do NAS Synology DS-218+

NOTA: aqui estará documentada toda a configuração de rede e configuração de todos os serviços do NAS servidor, para ser possível recriar tudo manualmente, mesmo noutro sistema (máquina macOS ou Linux). ATENÇÃO! Esta configuração é considerada a final, mas pode não ser a mais recente. Conforme eu for testando e modificando as coisas, vou tomando nota no Workflowy; depois vou copiando para aqui os dados quando as coisas estiverem estáveis.

Web server e PHP

Instalei WebStation com Apache 2.4 e PHP 7.2. e PHPyAdmin.
NOTA: Tive de mexer na config core de PHP na WebStation para ajustar a socket da MariaDB 10 (mysqlsock10).

WordPress websites

Criei de raiz o da Intellego, depois importei o ficheiro que exportei do site do mac mini. Copiei os dados do diretorio wp-content.
Tive de mexer um muita coisa manualmente, mas a versão do WP era antiga. Talvez tenha sido por isso.
Depois criei um para a Ester.
Ainda não migrei o meu, que ficará em flink.intellego.pt. Vou perder o crawl da Google no outro link, mas que se lixe. O blog é só para mim. Acho que vou lá colocar as Flink Help Files em posts com o video e com as transcriptions.

Calendários

Com as contas criadas no server e o Calendar instalado, já tínhamos acesso Web ao serviço de calendários. Depois (talcomo eu queria), foi só exportar os calendários do Calendar.app cliente, e importar no server também na app cliente web.

  • Export

Exportei os calendários todos da minha conta no Calendar.app da Apple, tanto os meus como os “delegated” da Intellego a que toda a família tinha acesso. Tive de exportar um a um para ficheiro ICS.

  • Import

No server, entrei na minha conta, depois entrei no Calendar (abre website à parte, tal como o PhotoStation ou o PHPMyAdmin), e criei manualmente todos os calendários (inclusivé os delegated). Depois importei os ficheiros ICS um a uma, dando o calendário correto já criado como destino. Até as cores configurei iguais aos anteriores(manualmente).
Os calendários que toda a família deve ter acesso (os antigos delegated da conta da Intellego) estão agora na minha conta, partilhados com toda a família, com permissões de alteração. Apenas eu posso mudar as permissões, mas toda a gente tem acesso read/write.

NOTA: Apesar do serviço funcionar na porta 8443 TCP, se eu fechar a porta de acesso do exterior ao Web Management do servidor (no nosso caso a porta 29009) o serviço deixa de funcionar nos devices de fora da nossa rede (por exemplo, no meu Mac da progresso e nos telemóveis fora da nossa rede). Não sei porquê, mas na página da Synology sobre as portas usadas pelo server aparece a entrada:

Synology CardDAV Server8008 (HTTP), 8443 (HTTPS)TCP

mas também aparece:

Synology Calendar5000 (HTTP), 5001 (HTTPS)TCP

, o que dá a entender que a porta de Web Management é necessária para que o serviço funcione.


Para configurar no macOS:

Criar nova conta CalDAV, Advanced.Fui ver no Calendar website, em um calendario → CalDAV Account, tem lá um link SSL. Do tipo:

https://formula9.net:29009/caldav/flink

No frame de criação, introduzir:

  • server: formula9.net
  • path: /caldav/flink/   ← ATENÇÃO! Tem de ter a barra no fim! No link acima não a põem mas aqui tem de estar!
  • port: 29009 (era 5001)
  • use SSL: selecionado

Quando foi da config do MacbookPro M3 Pro da Matilde, usei o que estava no website do Calendar (selecionar o pulldown em “My Calendar” e depois “CalDav Account”):

https://formula9.net:29009/caldav/matilde/

No telemóvel Android dela, quando fiz reset total, também usei isto. Nota a porta é 29009 e não a 5001!

Para configurar em Android:

OLD: Usei a app do costume, CalDAV-Sync.Criei conta nova, com dados:
Server name or URL: formula9.net:5001/caldav/flink/

NEW:
No telemóvel novo da Ester (e na reconfiguração do da Matilde), utilizei a app gratuita DavX5 (instalada com FDroid):

https://formula9.net:29009/caldav/esterlinha/

e o login dela, com sucesso.

Nota a porta! Agora é 29009!

E pronto!
Para configurar em Rasberry Pi ou Linux:?

Contactos

Foi só instalar a CardDAV Server app no server, abri-la (tenho acesso aos contactos de toda a gente) e importar os contactos em formato VCard, exportados da Contacts.app da Apple (selecionando todos os contactos e exportando).

Para configurar no macOS:

Adicionei uma conta CardDAV manual com o meu user e pass, e com este link no server:

  • formula9.net:8443/addressbooks/users/flink/addressbook

Mudar flink para cada user, claro.

Para configurar em Android:

Usei a app do costume, CardDAV-Sync.Criei conta nova, com dados:Server name or URL:  formula9.net:8443/addressbooks/users/flink/addressbook
No telemóvel novo da Ester, utilizei a app gratuita DavX5 (instalada com FDroid), pois a CalDAV-Sync parece já não ser suportada pelo developer:

https://intellego.pt:8443/addressbooks/users/esterlinha/

E pronto!

Git

Copiei o diretório git do server antigo para o novo. Depois, na app SourceTree foi só afinar o path que era 

ssh://flink@192.168.29.22:/Volumes/CargoBay/git/ProgressorEVO2.git 

e passei para 
ssh://flink@192.168.29.52:/volume1/CargoBay/git/ProgressorEVO2.git

Houve um problema de autenticação, e tive de apagar a entrada na KeyChain da SourceTree. Depois tudo OK.

Email

Configurei o email no NAS. Nada de especial a apontar, tive cuidado de criar os users com os nomes que já tinham no server antigo. Coloquei o domínio intellego.pt como principal, e o formula9.net como adicional, só para mim, Ester e Avelino.

Quando mudei, o servidor novo reportava que estávamos na DNSBL RATS-Dyna (provavelmente pelo reverse DNS não-existente).

Tirei os logins dos meus emails e da Ester para referencia depois da migração.
Mudei no Router para o server novo; criei mais entradas no port forwarding, de acordo com o documento que encontrei da Synology, não sei se são necessárias todas (talvez um dia valha a pena testar desactivar as que criei novas em relação ao Mac mini), foram estas: TODO

EVENTO: Reverse DNS

Um servidor de email deve ter registos PTR de reverse DNS. Pedi ao nosso ISP (NOWO) que me criasse registos PTR de reverse DNS, que ainda não existiam, para os dois domínios. Fizeram-no após telefonema e enviar email com os dados para info@nowo.pt em 30/5/2017.

Mais tarde fiz também para o domínio da nathumtec.pt, mas teve de ser por outro meio que não o email info@nowo.pt, (creio que foi por mensagem no formulário do site deles e depois me contactaram por telefone).

Para verificar podes fazer num terminal:

dig -x 213.228.178.113

O resultado deve ser parecido com este:

; <<>> DiG 9.10.6 <<>> -x 213.228.178.113
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24079
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;113.178.228.213.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
113.178.228.213.in-addr.arpa. 86400 IN	PTR	intellego.pt.
113.178.228.213.in-addr.arpa. 86400 IN	PTR	nathumtec.pt.
113.178.228.213.in-addr.arpa. 86400 IN	PTR	formula9.net.

;; Query time: 547 msec
;; SERVER: 192.168.29.25#53(192.168.29.25)
;; WHEN: Fri Aug 19 09:54:30 WEST 2022
;; MSG SIZE  rcvd: 133

EVENTO: Spamhaus deixou de funcionar e impedia o meu servidor de receber emails (filtrava tudo)

Nota: este erro é associado a este evento da Spamhaus: https://www.spamhaus.com/resource-center/if-you-query-spamhaus-projects-dnsbls-via-cloudflares-dns-move-to-the-free-data-query-service/ ; basicamente aconteceu-me porque mudei o nosso servidor de DNS para a Cloudflare em vez da Google e tinha colocado o server a usar o nosso DNS server para monitorar onde ele se estava a ligar (pelo menos nos acessos via DNS, não aos diretos ao IP…).

No dia 18 de agosto de 2022 apercebi-me que não estava a receber emails nas contas do server (flink, oscar) há mais de um dia, então enviei emails da UA e da MP, e não chegavam, com o seguinte erro:

Mail da UA:

Delivery has failed to these recipients or groups:

oscar@nathumtec.pt
Your message couldn’t be delivered because it’s suspected of being spam. For best practices when sending email, refer to the guidelines found here: https://go.microsoft.com/fwlink/?LinkID=526654.

Diagnostic information for administrators:

Generating server: VI1PR02MB5200.eurprd02.prod.outlook.com

oscar@nathumtec.pt
Remote Server returned ‘550 5.7.514 Decision Engine classified the mail item was rejected because of IP Block (from outbound normal IP pools) -> 550 5.7.1 Service unavailable; client [40.107.7.131] blocked using sbl.spamhaus.org’

Mail da MP:

intellego.pt rejected your message to the following email addresses:

flink@formula9.net
Your message wasn’t delivered due to a permission or security issue. It may have been rejected by a moderator, the address may only accept email from certain senders, or another restriction may be preventing delivery.

intellego.pt gave this error:
Service unavailable; client [213.134.33.41] blocked using sbl.spamhaus.org 

Diagnostic information for administrators:

Generating server: u2-mbx1.XCH2013.local

flink@formula9.net
intellego.pt
Remote Server returned ‘550 5.7.1 Service unavailable; client [213.134.33.41] blocked using sbl.spamhaus.org’

RESOLUÇÃO:

Fui às definições de security no Synology Mail Server Plus, e desativei (temporariamente, espero) o filtro DNSBL (da spamhaus). Ficou a funcionar, mas os emails de entretanto foram perdidos, pois o meu server reportava um erro 550 para trás…

Depois de pesquisar percebi que tinha a ver com a mudança da Spamhaus:

https://www.spamhaus.com/resource-center/if-you-query-spamhaus-projects-dnsbls-via-cloudflares-dns-move-to-the-free-data-query-service/

e decidi esperar alguns dias sem o spamhaus configurado a ver o que a coisa dá. Esperei e recebia muito lixo. Na prática já estava a receber muito lixo há uns tempos, pq a Spamhaus deve numa primeira fase ter desativado o filtro e só depois dava o erro que filtrava tudo.
Decidi voltar à situação inicial e reconfigurar o server para usar o DNS por default, do nosso ISP (no router), sem passar pelo nosso servidor de DNS-PiHole.
A outra solução alternativa é criar uma conta na Spamhaus, que parece também funcionar, mas não sei como se faz. Vi aqui:

https://community.synology.com/enu/forum/1/post/153854

EVENTO: Mudança de IP

Em novembro de 2022 a NOWO muda o nosso IP de 213.228.178.113 para 213.228.134.107

Tive de pedir para configurarem o Reverse DNS. Fizeram-no muitos dias depois da mudança, mas embora os servidores de DNS portugueses (e europeus? testei com a VPN Netshade) mostrem resultados iguais aos do IP anterior,

EurekaMaru:Desktop flink$ dig -x 213.228.134.107

; <<>> DiG 9.10.6 <<>> -x 213.228.134.107
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63706
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;107.134.228.213.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
107.134.228.213.in-addr.arpa. 3600 IN	PTR	intellego.pt.
107.134.228.213.in-addr.arpa. 3600 IN	PTR	formula9.net.
107.134.228.213.in-addr.arpa. 3600 IN	PTR	nathumtec.pt.

;; Query time: 151 msec
;; SERVER: 192.168.29.29#53(192.168.29.29)
;; WHEN: Mon Dec 12 15:11:45 WET 2022
;; MSG SIZE  rcvd: 219

um teste ligado aos USA via VPN (ou através do site mxtoolbox.com) não dá o resultado desejado.

SpacePod:CheckpointVPN-Disable_Enable_Script flink$ dig -x 213.228.134.107

; <<>> DiG 9.10.6 <<>> -x 213.228.134.107
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11568
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;107.134.228.213.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
107.134.228.213.in-addr.arpa. 86400 IN	PTR	pal-213-228-134-107.netvisao.pt.

;; Query time: 103 msec
;; SERVER: 127.0.2.2#53(127.0.2.2)
;; WHEN: Mon Dec 12 15:11:22 WET 2022
;; MSG SIZE  rcvd: 102
Resultado em mxtoolbox.com

Ainda aguardo novidades deles, pois já pedi para reverem o assunto.

EVENTO: Google deixa de aceitar os emails que envio do meu server, diz que não tem SPF ou DKIM

Inicialmente pensei que tinha a haver com o facto do Reverse DNS não estar bem nos USA, mas estar bem na Europa. É que consigo enviar emails para a UA, mas não para a Google. Também conseguia enviar para a Cloudflare (mails com a Taline).

Ao enviar um email para a Google, recebo este email de volta:

This is the mail system at host intellego.pt.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                   The mail system

<matildetsarabando@gmail.com>: host gmail-smtp-in.l.google.com[74.125.206.27]
    said: 550-5.7.26 This message does not pass authentication checks (SPF and
    DKIM both 550-5.7.26 do not pass). SPF check for [intellego.pt] does not
    pass with ip: 550-5.7.26 [213.228.134.107].To best protect our users from
    spam, the message 550-5.7.26 has been blocked. Please visit 550-5.7.26
    https://support.google.com/mail/answer/81126#authentication for more 550
    5.7.26 information. l14-20020a5d668e000000b00241bf91afabsi4742771wru.570 -
    gsmtp (in reply to end of DATA command)

De facto não tinha SPF (uma falha grande). Agora já criei as entradas SPF no DNS (dominios.pt) nos 3 domínios que tenho, assim:

Exemplo para intellego.pt: Name: intellego.pt Tipo:TXT Texto:”v=spf1 ip4:213.228.134.107 -all” Pri:10

Devo configurar a seguir o DKIM e o DMARC também.