Un server SMTP (Simple Mail Transfer Protocol) è essenziale per inviare email. Node.js offre una serie di librerie che rendono la configurazione di un server SMTP semplice e veloce. In questo articolo, mostreremo come creare un server SMTP di base utilizzando Node.js e il modulo smtp-server.
Il modulo smtp-server è una libreria leggera e potente per configurare server SMTP. Installalo con il comando:
npm install smtp-server
Crea un file chiamato server.js e aggiungi il seguente codice:
const { SMTPServer } = require("smtp-server");
const server = new SMTPServer({
// Funzione per autenticare i client
onAuth(auth, session, callback) {
if (auth.username === "user" && auth.password === "password") {
return callback(null, { user: "authorized" });
}
return callback(new Error("Invalid username or password"));
},
// Funzione per gestire i messaggi in arrivo
onData(stream, session, callback) {
let message = "";
stream.on("data", (chunk) => {
message += chunk.toString();
});
stream.on("end", () => {
console.log("Received message:", message);
callback(null); // Conferma che il messaggio è stato ricevuto
});
},
// Configurazioni aggiuntive
disabledCommands: ["STARTTLS"], // Disabilita STARTTLS per semplicità
});
// Avvia il server SMTP sulla porta 2525
server.listen(2525, () => {
console.log("SMTP server is running on port 2525");
});
Puoi utilizzare un client SMTP, come uno script Node.js, per testare il server. Ecco un esempio di script per inviare un'email:
const nodemailer = require("nodemailer");
const transporter = nodemailer.createTransport({
host: "localhost",
port: 2525,
secure: false,
auth: {
user: "user",
pass: "password",
},
});
const mailOptions = {
from: "test@example.com",
to: "recipient@example.com",
subject: "Test Email",
text: "Hello from Node.js SMTP server!",
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.error("Error sending email:", error);
}
console.log("Email sent:", info.response);
});
Conclusione
Abbiamo configurato un server SMTP di base utilizzando Node.js e il modulo smtp-server. Questo server può essere utilizzato per testare l'invio di email o come base per un'applicazione più complessa. Per migliorare la sicurezza e le funzionalità, considera di implementare SSL/TLS e di integrare il server con un database per la gestione degli utenti.