Passa al contenuto principale
Versione: Next

Mailcow su Aruba Cloud

Distribuisci Mailcow — una suite completa di server email dockerizzata — su Aruba Cloud tramite Terraform e cloud-init. Mailcow raggruppa Postfix, Dovecot, Rspamd, ClamAV, SOGo e un pannello di amministrazione web in un unico stack Docker Compose.

Versione provider: arubacloud/arubacloud ~> 1.0 | Terraform: ≥ 1.9


Introduzione​

Mailcow è la soluzione email self-hosted più diffusa con un'interfaccia web rifinita (SOGo), anti-spam integrato (Rspamd), anti-virus (ClamAV) e TLS automatico via Let's Encrypt. Questo esempio distribuisce:

  • Mailcow dockerized tramite lo script di installazione ufficiale su una singola VM
  • Tutte le porte necessarie aperte: SMTP (25), SMTPS (465), submission (587), IMAPS (993), POP3S (995), Sieve (4190), HTTP (80), HTTPS (443)
  • Certificati TLS auto-provisionati da Let's Encrypt (il DNS deve risolvere prima dell'apply)

DNS prima di tutto: L'integrazione Let's Encrypt di Mailcow viene eseguita all'avvio del container. Configura il tuo record A per mail_hostname → IP pubblico della VM prima di eseguire terraform apply.


Panoramica dell'architettura​


Infrastruttura creata​

RisorsaPattern nomeDescrizione
arubacloud_projectmail-prodContenitore progetto
arubacloud_vpcmail-prod-vpcVirtual Private Cloud
arubacloud_subnetmail-prod-subnetSubnet di base
arubacloud_securitygroupmail-prod-vm-sgSecurity group
arubacloud_securityrulemail-prod-vm-sshIngresso SSH (22)
arubacloud_securityrulemail-prod-vm-smtpIngresso SMTP (25)
arubacloud_securityrulemail-prod-vm-httpIngresso HTTP (80)
arubacloud_securityrulemail-prod-vm-httpsIngresso HTTPS (443)
arubacloud_securityrulemail-prod-vm-smtpsIngresso SMTPS (465)
arubacloud_securityrulemail-prod-vm-subIngresso Submission (587)
arubacloud_securityrulemail-prod-vm-imapsIngresso IMAPS (993)
arubacloud_securityrulemail-prod-vm-pop3sIngresso POP3S (995)
arubacloud_securityrulemail-prod-vm-sieveIngresso Sieve (4190)
arubacloud_elasticipmail-prod-vm-eipIP pubblico VM
arubacloud_blockstoragemail-prod-bootDisco di avvio 80 GB (Performance)
arubacloud_keypairmail-prod-keypairChiave pubblica SSH
arubacloud_cloudservermail-prod-vmCloudServer VM

Costo mensile stimato​

RisorsaSpecificheCosto/mese stimato
CloudServer VMCSO4A8 — 4 vCPU / 8 GB~€40
Disco di avvio80 GB Performance~€12
Elastic IP—~€3
Totale~€55/mese

Requisiti​

  • Terraform ≥ 1.9
  • ArubaCloud Terraform Provider ~> 1.0
  • Un account ArubaCloud con credenziali API OAuth2
  • Una coppia di chiavi SSH
  • Un nome di dominio con controllo DNS (richiesto per TLS)

Variabili​

Obbligatorie​

VariabileDescrizione
arubacloud_client_idClient ID OAuth2 ArubaCloud
arubacloud_client_secretClient secret OAuth2 ArubaCloud
ssh_public_keyContenuto della chiave pubblica SSH
mail_hostnameFQDN mail principale (es. mail.example.com)

Opzionali​

VariabileDefaultDescrizione
app_name"mail"Nome breve usato in tutti i nomi delle risorse
environment"prod"Etichetta ambiente
location"ITBG-Bergamo"Regione ArubaCloud
zone"ITBG-1"Zona di disponibilità
billing_period"Hour""Hour" o "Month"
vm_flavor"CSO4A8"Flavor CloudServer
vm_disk_size_gb80Dimensione disco di avvio in GB (min 40)
ssh_cidr"0.0.0.0/0"CIDR per accesso SSH
mailcow_branch"master"Branch Git di Mailcow

Output​

OutputDescrizione
mailcow_urlURL interfaccia web Mailcow (HTTPS)
vm_public_ipIndirizzo IP pubblico della VM
ssh_commandComando SSH per connettersi alla VM

Istruzioni di distribuzione​

1. Configura prima il DNS​

Punta il record A del tuo hostname mail all'indirizzo dell'Elastic IP. Poiché l'IP è noto solo dopo l'apply, hai due opzioni:

  • Pre-crea la risorsa Elastic IP separatamente e ottieni il suo IP, oppure
  • Distribuisci temporaneamente con DNS disabilitato, poi aggiorna il DNS ed esegui nuovamente terraform apply.

2. Clona e naviga​

git clone https://github.com/arubacloud/terraform-arubacloud-examples.git
cd terraform-arubacloud-examples/mailcow

3. Configura le variabili​

cp terraform.tfvars.example terraform.tfvars

4. Distribuisci​

terraform init
terraform plan
terraform apply

Il bootstrap richiede circa 5–10 minuti.

5. Primo accesso​

Naviga su https://mail.example.com e accedi con:

  • Nome utente: admin
  • Password: moohoo

Cambia immediatamente la password admin dopo il primo accesso.


Checklist post-distribuzione​

  • Cambia la password admin
  • Configura i record MX, SPF, DKIM e DMARC del tuo dominio
  • Verifica che il record PTR (DNS inverso) corrisponda a mail_hostname
  • Testa la consegna delle email con mail-tester.com

Riferimenti​