# Construcció i Restauració d'un Servidor MIAB (Mail in a Box)

**Publicat:** dj. 30 de desembre de 2021  
**Per:** [Mike Neumann](https://www.mikeneumann.net/author/mike-neumann.html)  
**En:** [tech](https://www.mikeneumann.net/category/tech.html).  
**Etiquetes:** [ubuntu](https://www.mikeneumann.net/tag/ubuntu.html), [email](https://www.mikeneumann.net/tag/email.html), [sysadmin](https://www.mikeneumann.net/tag/sysadmin.html)  

## Això és el que farem

- Assegurar el servidor original (comprova si hi ha actualitzacions del sistema o de MIAB, tanca la porta a qualsevol tràfic entrant i fes una última còpia de seguretat)
- Engegar el nou servidor Ubuntu
- Instal·lar MIAB al nou servidor
- Restaurar totes les dades de MIAB al nou servidor (i hi ha un punt clau en aquest pas, que em va inspirar a escriure aquest post), i esperar la propagació del DNS.
- Provar algunes coses i esperar...

## D'acord, assegurem el vell servidor

Mantinc un servidor bastant net, però mai se sap quan una actualització es farà efectiva i el nou servidor estarà totalment actualitzat - així que revisem igualment.

### Actualitza el sistema antic

```bash
suser@box:~$ sudo apt-get update && sudo apt-get dist-upgrade
```
_passem a tancar el firewall a tot el tràfic entrant, excepte SSH
```bash

sudo ufw reset
sudo ufw allow 22
sudo ufw enable
```

Aquestes comandes fan que se'm desconnecti la sessió SSH, així que torno a entrar... cap problema però si estàs dins un PROXMOX i entres per ID del contenidor amb la ubuntu

Fer una còpia de seguretat de les dades del vell MIAB

MIAB ofereix moltes opcions de còpia de seguretat; local a la màquina (i després has de decidir com copiar els fitxers de còpia de seguretat a algun altre lloc per estar segur), o remot a algun altre servidor. Nota: MIAB va afegir l'opció BackBlaze B2 fa unes quantes versions, però simplement no funciona. Algú va investigar i resulta que és un problema en la implementació del protocol per part de MIAB. Jo utilitzo rsync a un altre servidor.

```bash

suser@box:~$ cd mailinabox
suser@box:~/mailinabox$ sudo management/backup.py
[sudo] contrasenya per a suser:
suser@box:~/mailinabox$
```
No hi ha cap feedback durant aquesta comanda. Pensaràs que no està passant res o que has escrit malament la contrasenya. Probablement està funcionant. Per cert, simplement executa la configuració actual de "Còpia de Seguretat" en el teu MIAB. En el meu cas, estava connectat al meu servidor de destinació de còpia de seguretat i vaig observar que es van crear/transferred nous fitxers de còpia de seguretat, així que està bé...

Per descomptat, assegura't que tens la teva clau secreta de còpia de seguretat disponible. Es troba a: /home/user-data/backup/secret_key.txt al teu servidor, i ja hauries de tenir una còpia dels seus continguts en algun lloc segur. La necessitaràs per restaurar les dades copiades al nou servidor.

En aquest punt, el nostre vell servidor MIAB encara està funcionant però no acceptant connexions, hem fet una última còpia de seguretat i estem a punt per construir el nou servidor.
Construcció del nou servidor

La guia d'instal·lació de "The Machine" de MIAB és la nostra referència, i realment no hi ha res a afegir a aquesta guia, però faré algunes notes aquí pel camí sobre algunes eleccions específiques que he fet.

Al llarg d'aquesta guia, utilitzaré "box.mydomain.com" com el nom de la meva caixa MIAB.

Preparar el servidor per a MIAB

Eliminar aquesta contrasenya de root i nomenar el teu servidor.

Ja tinc claus SSH establertes, així que les usarem per entrar al flamant servidor i desactivar la contrasenya de root que vam haver d'introduir abans.
```bash
ssh root@170.187.158.22
passwd -l root
adduser suser
usermod -aG sudo suser
apt-get update && apt-get dist-upgrade
```
Aquestes comandes em connecten com a root al nou servidor usant ssh, deshabilitant la contrasenya d'usuari root, afegint un nou usuari al sistema que usaré com un usuari 'sudo', i després executant les actualitzacions del sistema - hi haurà moltes actualitzacions.

Mentre les actualitzacions s'executen en una finestra de shell, obro un altre terminal al meu ordinador per pujar la meva clau ssh de 'suser' al compte corresponent al nou servidor.

ssh-copy-id -i ~/.ssh/id_rsa.pub suser@74.207.227.185

Un cop completades les actualitzacions, em connecto usant les meves claus ssh de 'suser' al servidor:

ssh suser@74.207.227.185

El Missatge del Dia ens dirà que el sistema necessita ser reiniciat (a causa de totes aquestes actualitzacions), però fem algunes coses necessàries mentre hi som.

sudo hostnamectl set-hostname box
sudo hostnamectl set-hostname "box" --pretty
sudo shutdown -r now

Aquesta és la millor manera que conec per establir el nom d'amfitrió en un nou servidor, seguit d'un reinici.
(Opcional) Endurir SSHD

Ja vam desactivar la contrasenya al compte 'root', així que ara fem algunes altres coses per assegurar més una mica el ssh al servidor, incloent no permetre 'root' des de configurar l'inici de sessió mitjançant ssh.

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo vi /etc/ssh/sshd_config

Després he canviat els següents paràmetres a sshd_config amb els valors següents:

PasswordAuthentication no
PermitEmptyPasswords no
PermitRootLogin no
MaxAuthTries 3
MaxSession 5

Desat i sortit de vi, i reiniciat el servei ssh.

sudo /etc/init.d/ssh restart

MIAB s'encarrega del firewall, però de moment, hem de fer aquests canvis DNS al Registre de Domini perquè, amb sort, quan tinguem MIAB instal·lat i les nostres dades restaurades, els Glue Records i els registres A del servidor apuntaran al


### Restauració de les dades de còpia de seguretat al nou servidor

Estic segur que hi ha maneres millors de fer això, però la mida dels meus fitxers de còpia de seguretat no és gran, i en lloc d'afegir noves credencials/permissions, etc., simplement vaig copiar les dades de còpia de seguretat de MIAB a una ubicació intermediària (la meva estació de treball) des del servidor on havia fet les còpies de seguretat automàtiques. Així, des de la meva estació de treball, vaig executar la següent comanda per copiar les dades de còpia de seguretat cap a la meva estació:

```bash
rsync -avhe ssh --dry-run suser@some.otherserver.com:/home/boxbackup/boxbackups .
```

Per cert, m'encanta utilitzar l'opció `--dry-run` per assegurar-me que la comanda és correcta abans de transferir molts fitxers a algun lloc on no els vull enviar. Naturalment, elimina aquesta opció abans d'executar la comanda. :)

Després, vaig pujar les dades al nou servidor MIAB al directori d'inici del meu 'suser' per ara:

```bash
rsync -avhe ssh --dry-run boxbackups suser@74.207.227.185:/home/suser
```

### Presteu atenció aquí

Abans d'executar la comanda per restaurar les dades de còpia de seguretat de MIAB al nou servidor, heu de fer dues coses:
- Actualitzeu `/home/user-data/backup/secret_key.txt` amb els continguts d'aquest fitxer del servidor original o no podreu desxifrar les dades de còpia de seguretat.
- ELIMINEU les dades SSL generades per la nova instal·lació de MIAB perquè el procés de restauració fallarà si hi ha alguna cosa en aquest directori d'ssl.

Hi HAURÀ dades en aquest directori, ja que van ser creades pel procés d'instal·lació de MIAB. Aquest directori HA D'ESTAR buit abans de restaurar les dades de la còpia de seguretat, sinó haureu d'instal·lar el nou servidor de nou, des de zero.

Per esborrar els fitxers ssl, fes això:

```bash
sudo rm -rf /home/user-data/ssl/*
```

Després, podeu restaurar les dades de còpia de seguretat amb èxit utilitzant aquestes comandes:

```bash
export PASSPHRASE=$(sudo cat /home/user-data/backup/secret_key.txt)
sudo -E duplicity restore --force file:/home/suser/boxbackups /home/user-data
```

Tot hauria de funcionar sense errors. Si és així, torneu a executar l'instal·lador MIAB per reunir el sistema:

```bash
sudo mailinabox
```

Després d'un temps, i els diàlegs habituals (sense res a canviar aquí), hauríeu de veure el següent text familiar...

El vostre Mail-in-a-Box està en funcionament. Si us plau, accediu al panell de control per a més instruccions a: `https://74.207.227.185/admin`









