Accedi
Accedi

Che cos’è un daemon in informatica?

Che cos’è un daemon in informatica?
Hostman Team
Redattore tecnico
Sistema: Linux
23.10.2025
Reading time: 9 min

Il termine daemon deriva dalla mitologia greca antica, dove indicava un essere immateriale che influenzava il mondo umano.

In informatica, soprattutto nei sistemi operativi di tipo UNIX, un daemon è un processo in background che si esegue senza interazione diretta con l’utente. Non dipende da un terminale o da un’interfaccia grafica e in genere viene avviato all’avvio del sistema o in determinate condizioni.

Che cos’è un daemon

La funzione principale di un daemon è fornire servizi specifici ad altri processi o utenti. Ad esempio, un daemon può restare in ascolto su porte di rete in attesa di connessioni, monitorare eventi di sistema e rispondere quando vengono soddisfatte determinate condizioni, gestire attività pianificate (come cron), inviare e-mail (sendmail) e molto altro.

In Windows, l’equivalente più vicino a un daemon è un servizio (Service). La differenza principale risiede nel modo in cui vengono avviati, registrati, gestiti e configurati all’interno del sistema operativo. Tuttavia, lo scopo è lo stesso: garantire il funzionamento continuo in background di determinate funzioni o servizi.

Caratteristiche principali di un daemon

  • Esecuzione in background: gli utenti di solito non vedono un’interfaccia del daemon; non scrive sull’output standard (o lo reindirizza ai log) e non richiede input da tastiera.

  • Autonomo: un daemon viene avviato all’avvio del sistema, quando viene richiamato da un sistema di init (come systemd), oppure manualmente dall’utente (tramite script, cron, ecc.).

  • Lunga durata: idealmente un daemon viene eseguito indefinitamente, a meno che non si verifichi un errore critico o riceva un segnale di arresto esplicito.

  • Isolato: di solito viene eseguito sotto un account utente o gruppo separato per ridurre i privilegi, rendendo i servizi più sicuri e facili da gestire.

  • Logging: invece di utilizzare input/output standard, i daemon registrano le informazioni in file di log o nel logger di sistema (journald, syslog, ecc.), utile per il debug e la diagnostica.

Daemon in Linux

Storicamente, quasi tutte le attività di sistema in background in Linux sono implementate come daemon. Il sistema operativo ne include decine, ciascuno con una funzione specifica. Ecco alcuni esempi:

  • sshd (Secure Shell Daemon): resta in ascolto sulla porta 22 (per impostazione predefinita) e consente agli utenti remoti di connettersi tramite SSH crittografato. Senza sshd, l’accesso remoto al terminale sarebbe quasi impossibile.

  • cron: un daemon di pianificazione dei lavori. Controlla le voci del crontab ed esegue script o comandi secondo una pianificazione, come la pulizia dei log, l’invio di report o i controlli di sistema.

  • syslogd / rsyslog / journald: daemon di registrazione del sistema che raccolgono messaggi dal kernel, dalle utility, da altri daemon e applicazioni, e li salvano nei file di log o nel journal.

  • NetworkManager o Wicd: daemon che gestiscono le impostazioni di rete — automatizzano connessioni a reti cablate/wireless, switch, configurazioni VPN e altro.

Questi daemon vengono avviati all’avvio del sistema e registrati nel gestore dei servizi (ad esempio systemd). Restano in esecuzione fino allo spegnimento o riavvio del sistema. Gli utenti interagiscono con essi indirettamente — tramite file di configurazione, comandi da terminale (service, systemctl) o richieste di rete (se il daemon fornisce un’interfaccia HTTP/S, SSH o simile).

Come creare e gestire daemon

Per implementare un daemon, segui questi passaggi:

  1. Creazione del processo (fork): il processo padre chiama fork() e continua l’esecuzione del codice del daemon nel processo figlio.

  2. Scollegamento dal terminale di controllo (setsid): per evitare interferenze dell’utente (ad esempio la chiusura del terminale), il daemon chiama setsid() per avviare una nuova sessione e diventarne il leader.

  3. Chiusura dei descrittori di input/output standard: poiché il daemon non deve scrivere sullo schermo o attendere input, stdin, stdout e stderr vengono chiusi o reindirizzati ai file di log.

  4. Gestione dei segnali e logging: per supportare uno spegnimento pulito o il ricaricamento della configurazione, il daemon deve gestire i segnali (SIGTERM, SIGHUP, ecc.). La registrazione viene generalmente effettuata tramite syslog o file.

  5. Ciclo principale: dopo l’inizializzazione, il daemon entra nel ciclo principale: attende eventi, li gestisce e ripete finché non viene interrotto.

Vediamo come creare un daemon su Ubuntu 22.04 utilizzando un server cloud Hostman.

1. Scrivere il daemon in C

Crea un file chiamato mydaemon.c e inserisci il seguente codice:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <syslog.h>

int main() {
    // Aprire syslog
    openlog("mydaemon", LOG_PID, LOG_DAEMON);
    syslog(LOG_NOTICE, "Daemon started");

    // Ciclo infinito principale
    while (1) {
        // Attività in background: monitoraggio, gestione code, ecc.
        syslog(LOG_NOTICE, "Performing task...");
        sleep(60);
    }

    // Se il ciclo termina
    syslog(LOG_NOTICE, "Daemon stopped");
    closelog();

    return 0;
}

2. Compilare il programma

Aggiorna prima i pacchetti:

sudo apt update && sudo apt upgrade

Installa il compilatore GCC se non è già installato:

sudo apt install gcc

Compila il daemon:

gcc mydaemon.c -o mydaemon

3. Spostare l’eseguibile

Sposta il file binario in /usr/local/bin/, una posizione standard per le utility personalizzate:

mv mydaemon /usr/local/bin/mydaemon

4. Creare un servizio systemd

Crea un file di unità chiamato mydaemon.service:

sudo nano /etc/systemd/system/mydaemon.service

Inserisci il seguente contenuto:

[Unit]
Description=My Daemon
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mydaemon
Restart=on-failure

[Install]
WantedBy=multi-user.target

Spiegazione dei campi:

  • Description: descrizione mostrata in systemctl status.
  • After=network.target: assicura che il daemon si avvii dopo che la rete è attiva.
  • Type=simple: il daemon non crea sottoprocessi, si esegue come un unico processo.
  • ExecStart: percorso all’eseguibile del daemon.
  • Restart=on-failure: riavvio automatico in caso di errore del daemon.
  • WantedBy=multi-user.target: fa partire il servizio nell’ambiente multiutente standard.

5. Avviare e monitorare il daemon

sudo systemctl daemon-reload          # Ricaricare la configurazione di systemd
sudo systemctl start mydaemon         # Avviare il daemon
sudo systemctl status mydaemon        # Verificare lo stato

Se tutto funziona, lo stato mostrerà active. Per visualizzare i log:

journalctl -u mydaemon.service -e

Esempi di utilizzo dei daemon

  • Server web

Il loro compito è restare in ascolto su una porta di rete (di solito 80 o 443), accettare richieste HTTP/HTTPS, generare una risposta (una pagina HTML, dati JSON, ecc.) e restituire il risultato al client. Nella maggior parte dei casi, un server web si avvia con il sistema e rimane in esecuzione fino allo spegnimento o a un comando di stop (es. systemctl stop nginx).

  • Daemon di database

MySQL/MariaDB, PostgreSQL, MongoDB — tutti questi sono daemon. Si avviano con il sistema e continuano a funzionare in background, accettando richieste da applicazioni client o servizi web. Questi daemon registrano l’attività, supportano la configurazione tramite file e sono gestiti con strumenti dedicati (o systemd).

  • Pianificatori di attività (cron, atd)

Il daemon cron controlla la tabella di pianificazione (crontab) ed esegue programmi negli orari o intervalli specificati dall’utente. Ciò consente di automatizzare backup, aggiornamenti di sistema, controlli di integrità e molte altre attività di routine.

atd è un daemon simile, ma esegue le attività solo una volta in un momento specifico (a differenza di cron, che le esegue periodicamente).

  • Servizi di accesso e controllo (sshd, xrdp)

sshd (Secure Shell Daemon) fornisce accesso remoto tramite il protocollo SSH. xrdp abilita connessioni desktop remote utilizzando il protocollo RDP. Agisce come daemon che ascolta le connessioni di rete su una porta specifica.

  • Daemon del sistema di init (systemd, init, Upstart)

Nei sistemi moderni, il ruolo del “daemon principale” è svolto da systemd (che sostituisce il vecchio sistema SysV init). systemd è il primo processo che parte dopo il kernel ed è responsabile dell’avvio e della gestione di tutti gli altri servizi e processi. Li avvia in parallelo e gestisce le loro dipendenze. In breve, systemd è esso stesso un daemon che “orchestra” tutti gli altri del sistema.

Vantaggi e svantaggi dei daemon

Vantaggi:

  • Automazione: i daemon permettono di automatizzare il comportamento del sistema — dalla risposta alle richieste di rete alla pianificazione di attività — senza intervento dell’utente.

  • Isolamento: l’esecuzione sotto account o gruppi separati e il distacco dal terminale aumentano la sicurezza, limitando i danni potenziali in caso di compromissione.

  • Funzionamento continuo: un daemon può continuare a fornire servizi (come un server web) senza interruzioni anche se l’utente si disconnette o chiude la console.

  • Gestibilità: Linux fornisce strumenti di sistema (es. systemd, script di init) per gestire centralmente tutti i daemon: avvio, arresto, riavvio e registrazione.

Svantaggi:

  • Complessità di debug: poiché i daemon funzionano in background e non mostrano output su console, il debug richiede log dettagliati e configurazioni più complesse (flag di debug, tracciamento, ecc.).

  • Rischi di sicurezza: se un daemon viene eseguito con privilegi elevati (ad esempio come root), una vulnerabilità può compromettere l’intero sistema. È consigliabile eseguirli con privilegi limitati.

  • Gestione delle dipendenze: alcuni daemon possono fallire se, ad esempio, necessitano dell’accesso alla rete prima che questa sia disponibile. I moderni sistemi di init risolvono questo problema, ma con i vecchi script SysV init era comune.

  • Maggior consumo di risorse: qualsiasi processo in esecuzione continua consuma risorse di sistema (memoria, CPU). Un numero eccessivo di daemon può ridurre le prestazioni, soprattutto su sistemi con risorse limitate.

Conclusione

I daemon sono una parte fondamentale dell’architettura dei sistemi operativi Linux, offrendo ampie capacità di automazione e servizi in background. Consentono agli amministratori di configurare in modo flessibile operazioni di rete, attività pianificate, logging, sistemi di sicurezza e molti altri componenti.

Scrivere un proprio daemon richiede la comprensione di processi, segnali, chiamate di sistema e particolare attenzione alla registrazione e alla sicurezza.

I moderni sistemi di init (in particolare systemd) hanno semplificato la gestione dei daemon e la logica dei servizi, rendendo la creazione di servizi personalizzati più strutturata e flessibile. Tuttavia, rimane un campo complesso che richiede progettazione accurata, debug e manutenzione costante.

Se cerchi una soluzione affidabile, performante ed economica per i tuoi flussi di lavoro, Hostman offre opzioni di Hosting VPS Linux, tra cui Debian VPS, Ubuntu VPS e VPS CentOS.

Sistema: Linux
23.10.2025
Reading time: 9 min

Simili

Sistema: Linux

Come copiare file e directory in Linux

Quando inizi a lavorare con Linux, una delle attività essenziali che incontrerai è la gestione dei file. Che tu stia organizzando i tuoi documenti personali, migrando file di sistema o preparando backup completi, sapere come duplicare correttamente i file è fondamentale. Al centro di questo processo c’è il comando cp, uno strumento potente progettato per replicare facilmente file e directory. Questa guida è pensata per aiutarti a padroneggiare il comando cp. Esploreremo tutto: dalla copia di base dei file alla replicazione ricorsiva delle directory, insieme a consigli per preservare i metadati e prevenire la perdita accidentale di dati. Con esempi dettagliati, scenari reali e buone pratiche, acquisirai rapidamente la capacità di usare cp come un professionista di Linux. E se cerchi una soluzione affidabile, performante ed economica per i tuoi flussi di lavoro, Hostman offre opzioni di Hosting VPS Linux, tra cui VPS Debian, VPS Ubuntu e VPS CentOS. Esplorare il comando cp In Linux, il comando cp è il tuo strumento principale per copiare dati. La sua versatilità consente di gestire qualsiasi cosa: dalla copia di un singolo file al mirroring di strutture di directory complesse con sottocartelle annidate. A differenza dei gestori di file grafici, cp funziona interamente da terminale, offrendo un controllo preciso su ogni aspetto del processo di copia. Come funziona Nella sua forma più semplice, cp prende un file (o una directory) di origine e lo duplica in una nuova posizione. La sua flessibilità risiede però nelle opzioni: flag che permettono di modificare il comportamento del comando secondo le tue esigenze. Che si tratti di preservare i permessi, evitare sovrascritture accidentali o copiare interi alberi di directory, cp offre un’opzione per ogni scenario. Struttura di base del comando Il comando cp segue un formato semplice. Ecco la sintassi canonica: cp [options] source destination cp: il comando che avvia la copia. [options]: parametri aggiuntivi (flag) che controllano il comportamento del processo di copia. source: il file o la directory che desideri duplicare. destination: la posizione o il nome del file di destinazione. Questa struttura chiara rende cp un comando apprezzato sia dagli amministratori di sistema sia dagli utenti occasionali. Esplorare le opzioni principali La vera potenza di cp si rivela grazie alle sue numerose opzioni. Ecco alcune delle più utili: Copia ricorsiva (-r o -R): quando hai bisogno di copiare un’intera directory — comprese tutte le sue sottodirectory e i file — l’opzione ricorsiva è indispensabile. Indica a cp di attraversare l’intera struttura. Modalità interattiva (-i): la sicurezza prima di tutto! Questa opzione ti chiede conferma prima di sostituire un file esistente. È fondamentale quando lavori con dati importanti, poiché riduce il rischio di sovrascritture accidentali. Forzare la copia (-f): a volte è necessario ignorare gli avvisi e assicurarsi che il file venga copiato comunque. Questa opzione sostituisce i file esistenti senza chiedere conferma. Usala con cautela. Preservare gli attributi (-p): l’integrità dei file è importante, soprattutto quando si tratta di permessi, timestamp e informazioni sul proprietario. Questa opzione fa sì che la copia conservi tutti questi attributi. Output dettagliato (-v): se vuoi una visione chiara di ciò che sta accadendo durante il processo di copia, questa opzione mostra ogni passaggio nel terminale. È particolarmente utile quando copi molti file o durante il debug di operazioni complesse. Esempi pratici: copiare file Esaminiamo ora alcuni esempi pratici per vedere come queste opzioni si combinano nelle attività quotidiane. Copiare un singolo file Immagina di avere un file chiamato notes.txt e di voler creare una copia di backup nella stessa directory. Ti basta eseguire: cp notes.txt notes_backup.txt Questo comando crea una copia identica chiamata notes_backup.txt. Tuttavia, se esiste già un file con quel nome e vuoi evitare di sovrascriverlo senza conferma, puoi usare: cp -i notes.txt notes_backup.txt L’opzione -i ti assicura che venga richiesta una conferma prima di qualsiasi sovrascrittura. Trasferire file tra directory Se vuoi spostare un file in un’altra posizione, specifica la directory di destinazione. Ad esempio, per copiare report.pdf in una directory chiamata archive, usa: cp report.pdf /home/username/archive/ Assicurati che la directory di destinazione esista già; cp non la crea per te. Se non esiste, puoi crearla prima con il comando mkdir. Copiare più file contemporaneamente A volte potresti dover duplicare più file allo stesso tempo. Per copiare file1.txt, file2.txt e file3.txt in una directory chiamata backup, digita: cp file1.txt file2.txt file3.txt /home/username/backup/ Questo comando gestisce più file in un’unica operazione. Se hai molti file che seguono uno stesso schema — ad esempio tutti i file di log — puoi usare un carattere jolly: cp *.log /home/username/logs/ Questo indica a cp di copiare tutti i file che terminano con .log nella directory logs. Padroneggiare la copia ricorsiva delle directory Spesso il lavoro non riguarda un solo file, ma intere directory. Per copiare directory complete, è necessario usare la copia ricorsiva. Duplicare una directory in modo ricorsivo Supponiamo che tu voglia duplicare i contenuti di un sito web situato in /var/www/html per creare una copia di sicurezza. Il comando sarebbe: cp -r /var/www/html /backup/html_backup Qui, l’opzione -r indica a cp di copiare tutto all’interno di /var/www/html, incluse sottodirectory e file nascosti. Combinare copia ricorsiva e preservazione degli attributi Quando esegui il backup di directory, spesso è fondamentale mantenere permessi, timestamp e altri metadati. In questi casi, combina l’opzione ricorsiva con quella per preservare gli attributi: cp -rp /var/www/html /backup/html_backup Questo comando garantisce che ogni file presente in /var/www/html venga copiato in /backup/html_backup mantenendo tutti i suoi attributi originali. È una soluzione ideale per dati sensibili o configurazioni di sistema. Suggerimenti, trucchi e tecniche avanzate Ora che conosci le basi, esploriamo alcune strategie avanzate e buone pratiche per utilizzare il comando cp in modo ancora più efficace. Combinare le opzioni per una maggiore sicurezza È comune utilizzare più opzioni insieme per adattare il comportamento di cp. Ad esempio, per copiare una directory in modo sicuro preservando gli attributi e richiedendo conferma prima di sovrascrivere file esistenti, puoi usare: cp -rpi /data/source_directory /data/destination_directory Questa potente combinazione garantisce un processo di copia completo e sicuro. Gestire nomi di file con caratteri speciali I nomi dei file in Linux possono contenere spazi o caratteri speciali. Per assicurarti che vengano gestiti correttamente, racchiudili tra virgolette. Ad esempio: cp "My Important Document.txt" "My Important Document Copy.txt" Questo impedisce alla shell di interpretare gli spazi come separatori tra argomenti diversi. Evitare sovrascritture non intenzionali Per operazioni batch o script automatici, potresti voler impedire che file esistenti vengano sovrascritti. L’opzione -n (no-clobber) serve proprio a questo: cp -n *.conf /backup/configs/ Questo comando copia i file di configurazione solo se nel percorso di destinazione non esiste già un file con lo stesso nome. Usare la modalità dettagliata per il debug Quando lavori con un grande volume di file o devi analizzare un’operazione di copia, l’opzione dettagliata (-v) può essere estremamente utile: cp -rv /source/folder /destination/folder La modalità dettagliata mostra ogni file man mano che viene elaborato, offrendoti una visione chiara dell’operazione in corso e facilitando l’individuazione di eventuali problemi. Applicazioni e scenari reali Il comando cp non è utile solo per operazioni occasionali: è uno strumento fondamentale in numerosi contesti professionali. Amministrazione di sistema e backup Gli amministratori di sistema utilizzano spesso cp per creare copie di sicurezza prima di effettuare modifiche critiche alle configurazioni del sistema. Ad esempio: cp -rp /etc /backup/etc_backup Questo comando crea un backup completo della directory /etc, preservando tutte le impostazioni e i permessi di sistema. In caso di errore o guasto, tali backup risultano indispensabili. Migrazione dei dati e trasferimenti tra server Durante lo spostamento di dati tra server o diverse parti di una rete, cp assicura che tutti i file vengano copiati correttamente. Combinato con strumenti come rsync, può offrire soluzioni robuste per la migrazione dei dati. Sviluppo e test Gli sviluppatori duplicano spesso intere directory per creare ambienti di test o copie sandbox dei loro progetti. Che tu stia testando una nuova funzionalità o eseguendo il debug di un problema, copiare l’intero progetto preservando gli attributi può farti risparmiare tempo ed evitare potenziali errori. Buone pratiche per utilizzare cp in modo efficace Verificare i percorsi di destinazione: assicurati sempre che la directory di destinazione esista per evitare errori durante la copia. Usare la modalità interattiva per file critici: quando lavori con dati importanti, l’opzione -i può evitare sovrascritture accidentali richiedendo una conferma. Racchiudere tra virgolette i nomi dei file con spazi: assicurati che eventuali nomi contenenti spazi o caratteri speciali siano racchiusi tra virgolette. Pianificare una strategia di backup: esegui regolarmente backup delle directory essenziali utilizzando le opzioni ricorsive e di preservazione degli attributi. Combinare le opzioni in modo intelligente: usa combinazioni come -r, -p e -v per adattare cp alle tue esigenze, garantendo sicurezza e chiarezza nelle operazioni sui file. Considerazioni finali Il comando cp è un elemento fondamentale della gestione dei file in Linux. La sua semplicità nasconde una notevole potenza grazie alle numerose opzioni disponibili. Padroneggiando cp, non solo ottimizzi il tuo flusso di lavoro, ma proteggi anche i tuoi dati attraverso una gestione attenta degli attributi, copie ricorsive e automazioni ben progettate. Che tu sia un principiante nel mondo Linux o un utente esperto che desidera affinare le proprie competenze, le tecniche e gli esempi presentati in questa guida ti serviranno come riferimento affidabile per le attività di duplicazione dei file. Ricorda di consultare la pagina del manuale (man cp) per informazioni aggiuntive e opzioni avanzate. Sfrutta la versatilità del comando cp e presto scoprirai che gestire file e directory in Linux diventa una seconda natura.
28 November 2025 · 9 min to read
Servizi Webmail

Come inviare email in Linux dalla riga di comando con Sendmail e Mailx

Per chi gestisce server o lavora su attività di automazione, sapere come inviare email dal terminale Linux è essenziale. Questo approccio offre il pieno controllo sulle funzioni di posta elettronica ed elimina la necessità di programmi complessi. È particolarmente utile in scenari in cui velocità e semplicità sono fondamentali. Strumenti comuni come sendmail e mailx vengono spesso utilizzati per inviare messaggi, verificare impostazioni SMTP, automatizzare avvisi e integrarsi con script. Sono semplici ma efficaci — perfetti per informare i team sugli aggiornamenti del server, automatizzare report o testare configurazioni email. Questa guida è pensata per utenti che desiderano gestire la posta direttamente dal terminale. Copre l’installazione degli strumenti essenziali e approfondisce attività avanzate come l’invio di allegati e la configurazione degli strumenti di posta. Perché usare strumenti email da riga di comando? I due strumenti più utilizzati — sendmail e mailx — sono soluzioni affidabili per l’invio della posta in Linux e offrono numerosi vantaggi: Efficienza I client email tradizionali possono essere lenti e pesanti. Questi strumenti permettono invii rapidi e leggeri direttamente dal terminale. Automazione Si integrano facilmente con script shell, processi cron e strumenti di monitoraggio. È possibile automatizzare avvisi e notifiche ricorrenti. Risoluzione problemi SMTP Rendere più semplice il debug delle configurazioni SMTP. Questi comandi offrono visibilità sul processo di consegna e facilitano l’analisi di log ed errori. Flessibilità Che si tratti di inviare avvisi o generare report automatici, sendmail e mailx offrono versatilità per diverse esigenze operative. Prerequisiti Prima di utilizzare questi strumenti email nel Linux terminal, assicurati di avere: Accesso al terminale: in alcuni casi sono richiesti privilegi di root. Un server SMTP: necessario per testare l’invio delle email. Strumenti installati: verifica che sendmail e mailx siano presenti e funzionanti. Configurazione di un server SMTP I server SMTP sono indispensabili per l’invio di email. Esistono due categorie principali: Server SMTP esterni Server SMTP locali Server SMTP esterni Sono server di posta gestiti da provider terzi. Consentono l’invio di email verso destinatari esterni alla rete locale e garantiscono: consegna globale, autenticazione, crittografia, protezione antispam. Esempi Gmail Indirizzo: smtp.gmail.com Porta: 587 (TLS) o 465 (SSL) Outlook Indirizzo: smtp.office365.com Porta: 587 Questi server richiedono autenticazione (username, password o password specifiche app) e una connessione cifrata TLS/SSL. Nota: abbiamo già fornito una guida per configurare server SMTP esterni. Il comando per l’invio tramite Postfix rimane lo stesso: basta configurare le credenziali SMTP e sostituire l’indirizzo email con quello del provider scelto. Server SMTP locali Operano esclusivamente all’interno di una rete interna. Perfetti per: inviare email tra utenti locali (tom@office.local → jerry@office.local), attività di test e sviluppo, comunicazioni interne, ambienti che non richiedono accesso internet per la posta interna. Configurare un server SMTP locale 1. Installare Postfix sudo apt install postfix 2. Modificare la configurazione sudo nano /etc/postfix/main.cf Impostazioni principali: myhostname = mail.office.local mydomain = office.local myorigin = $mydomain inet_interfaces = loopback-only local_recipient_maps = proxy:unix:passwd.byname mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain Riavviare Postfix: sudo systemctl restart postfix 3. Creare utenti di posta sudo adduser linux sudo adduser hostman Crea indirizzi come linux@office.local. Panoramica su sendmail sendmail è uno dei mail transfer agent (MTA) più diffusi in Linux. Funziona con server SMTP per inviare email da sistemi locali o script. Installazione di sendmail Debian/Ubuntu sudo apt install sendmail CentOS/Red Hat sudo yum install sendmail Avvio e abilitazione del servizio sudo systemctl start sendmail sudo systemctl enable sendmail Testare sendmail echo "Testing sendmail setup" | sendmail -v your-email@example.com Verifica dei messaggi ricevuti: mail Installare mailutils se necessario: sudo apt install mailutils Oppure: cat /var/mail/user Configurazione del file sendmail.mc sudo nano /etc/mail/sendmail.mc Esempio: definire il dominio: define(`confDOMAIN_NAME', `your_domain.com')dnl Rigenerare la configurazione: sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf Se compare “permission denied”: sudo sh -c "m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf" Riavviare: sudo systemctl restart sendmail Inviare un’email con sendmail 1. Creare un file nano email.txt Contenuto: Subject: Test Email from Hostman This is a test email sent using sendmail on Linux. 2. Inviare sendmail recipient@example.com < email.txt 3. Verificare mail Inviare allegati con sendmail sendmail non supporta allegati nativamente; bisogna usare uuencode. Installare sharutils: sudo apt install sharutils Invio con allegato: ( echo "Subject: Email with attachment"; uuencode file.txt file.txt ) | sendmail recipient@example.com Verifica: mail Panoramica su mailx mailx è un'applicazione semplice ed efficace per gestire email via terminale. Fa parte del pacchetto mailutils nella maggior parte delle distribuzioni. Installare mailx Debian/Ubuntu sudo apt install mailutils Red Hat sudo yum install mailx Inviare email con mailx echo "This is the body of the email" | mailx -s "Test Email from Mailx" recipient@example.com Inviare allegati con mailx echo "Please find the attached document" | mailx -s "Email with Attachment" -A email.txt recipient@example.com Conclusione Inviare email dalla riga di comando in Linux è un metodo potente per automatizzare comunicazioni, diagnosticare server o testare configurazioni. Con sendmail e mailx, puoi gestire messaggi semplici o configurazioni avanzate con allegati. Questa guida fornisce istruzioni dettagliate per iniziare facilmente e migliorare il tuo flusso di lavoro.
26 November 2025 · 5 min to read
Sistema: Linux

Come aprire una porta su Linux

Aprire le porte in Linux è un’operazione fondamentale che consente a determinati servizi o applicazioni di scambiare dati sulla rete. Le porte agiscono come canali di comunicazione, permettendo l’accesso ai servizi autorizzati e bloccando quelli non autorizzati. La loro corretta gestione garantisce sicurezza, buone prestazioni e funzionamento stabile delle applicazioni. Comprendere le porte e la loro funzione Le porte sono gli endpoint logici della comunicazione di rete, attraverso i quali i dispositivi inviano e ricevono informazioni. Esempi comuni: HTTP → Porta 80 HTTPS → Porta 443 SSH → Porta 22 Una porta aperta indica che un servizio è in ascolto e accetta connessioni in ingresso. Una porta chiusa, invece, blocca la comunicazione. Per garantire sicurezza e disponibilità dei servizi, è fondamentale gestire correttamente le porte aperte su Linux. Verificare le porte aperte su Linux Prima di aprire una nuova porta, conviene controllare quali porte sono già attive. Puoi farlo con diversi comandi Linux. Con netstat Per mostrare le porte aperte, esegui: netstat -tuln L’opzione -tuln limita l’output alle porte TCP e UDP, senza risolvere i nomi host. netstat offre una panoramica in tempo reale delle connessioni attive. Nota: se netstat non è installato: sudo apt install net-tools Con ss Il comando ss è una versione più moderna e veloce di netstat: ss -tuln Mostra le porte attualmente in uso e le relative informazioni sui socket. Con nmap Per un’analisi più approfondita: nmap localhost nmap esegue una scansione dell’host specificato (in questo caso localhost) per individuare le porte aperte — utile per capire quali servizi sono esposti alla rete pubblica. Nota: installa nmap con: sudo apt install nmap Aprire porte su Linux Per consentire l’accesso attraverso una porta specifica, occorre modificare le regole del firewall. Linux offre vari strumenti: iptables, ufw e firewalld. Ecco come utilizzarli. Metodo 1: con iptables iptables è un potente strumento a basso livello che offre un controllo preciso sul traffico di rete. Aggiungere una regola per una porta specifica Esempio: aprire la porta 8080 per traffico HTTP: sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT Spiegazione: sudo: esegue il comando come amministratore -A INPUT: aggiunge la regola alla catena di input (traffico in ingresso) -p tcp: si applica al protocollo TCP --dport 8080: specifica la porta 8080 -j ACCEPT: accetta il traffico corrispondente alla regola Queste modifiche non sono permanenti: dopo il riavvio del sistema, le regole vengono cancellate. Salvare la configurazione Per rendere le regole permanenti: sudo apt install iptables iptables-persistent sudo netfilter-persistent save Le regole vengono così memorizzate e ricaricate automaticamente a ogni riavvio. Ricaricare le modifiche sudo netfilter-persistent reload Metodo 2: con ufw (Uncomplicated Firewall) ufw è un’interfaccia semplificata per iptables che permette di gestire facilmente le regole del firewall. Abilitare ufw sudo ufw enable Se non è installato: sudo apt install ufw Aprire una porta specifica Esempio: consentire connessioni SSH sulla porta 22: sudo ufw allow 22/tcp Questo comando autorizza il traffico TCP in ingresso sulla porta 22. Verificare lo stato del firewall sudo ufw status Mostra tutte le regole attive e le porte aperte. Metodo 3: con firewalld firewalld è un demone firewall dinamico che semplifica la gestione delle regole. Aggiungere una regola permanente Esempio: aprire la porta 443 (HTTPS): sudo firewall-cmd --permanent --add-port=443/tcp Installazione e avvio di firewalld: sudo apt install firewalld sudo systemctl enable firewalld sudo systemctl start firewalld Ricaricare le regole sudo firewall-cmd --reload Verificare che la porta sia aperta sudo firewall-cmd --list-all Visualizza tutte le zone e le regole attive, incluse le porte aperte. Testare la porta aperta Dopo aver aperto una porta, assicurati che sia effettivamente accessibile. Con telnet telnet localhost port_number Se la connessione va a buon fine, la porta è aperta e operativa. Con nmap nmap -p port_number localhost Scansiona il port specificato per verificarne la disponibilità. Con curl curl localhost:port_number Una risposta positiva indica che il servizio è attivo sulla porta aperta. Risoluzione dei problemi comuni Se l’apertura di una porta non funziona: Controlla le regole del firewall iptables -L ufw status Verifica lo stato del servizio systemctl status <nome_servizio> Aprire porte in base al protocollo A seconda del servizio, può essere richiesto TCP o UDP. Porta TCP Esempio: consentire il traffico MySQL sulla porta 3306: sudo ufw allow 3306/tcp Porta UDP Esempio: aprire la porta 161 per SNMP: sudo ufw allow 161/udp Gestire l’accessibilità delle porte Limitare l’accesso a un indirizzo IP specifico sudo ufw allow from 192.168.1.100 to any port 22 Permette l’accesso SSH solo da quell’indirizzo IP, migliorando la sicurezza. Chiudere una porta sudo ufw deny 80/tcpBlocca il traffico in ingresso sulla porta 80 (HTTP). Conclusione Verificare e aprire le porte in Linux è essenziale per garantire il corretto funzionamento della rete e la sicurezza dei servizi. Con strumenti come iptables, ufw e firewalld puoi controllare il traffico in modo preciso e sicuro. Effettua sempre test con nmap, curl o telnet per assicurarti che le configurazioni siano corrette. Una buona gestione delle porte è la base per server affidabili, connessioni sicure e prestazioni ottimali.
29 October 2025 · 5 min to read

Hai domande,
commenti o dubbi?

I nostri professionisti sono disponibili per assisterti in ogni momento,
che tu abbia bisogno di aiuto o non sappia da dove iniziare.
Inviaci un'email
Hostman's Support