Merhabalar, bu makalemde Node.js mail server kurulumunu göstereceğim. Ayrıca basit bir temp-mail (geçiçi mail servisi) örneği yapacağız..

Node.js Nedir?

Node.js JavaScript ile server side uygulamalar yazabilmenizi sağlayan bir platformdur. Hızla gelişmekte olan bu teknoloji neredeyse her alanda kullanılmaktadır.

Node.js Mail Server Kurulumu

Domain Ayarları

Bu makalede öğrettiklerim ile basit bir mail server kurabilecek, oluşturduğunuz mail adreslerine mail alabileceksiniz. Bu işlemi yapabilmek için öncelikle domain panelinizden 1 adet A kaydı ve 1 adet MX kaydı oluşturmanız gerekiyor.

A Kaydı

Name: mail.alanadiniz.com
Content: Sunucu IP Adresiniz
TTL: Auto

MX Kaydı

Name: alanadiniz.com
Mail Server: mail.alanadiniz.com
TTL: Auto
Priority: 10

NodeJS Mail Server Kurulumu

Mail Server Kurulumu

Domain kayıtlarını oluşturduktan sonra sunucumuza bağlanıyoruz. Mail server kurabilmek için sunucunuzda Node.js kurulu olması gerekiyor. Node.js’i bu adresten indirip kurabilirsiniz.

Sisteminize Node.js‘i kurduktan sonra boş bir klasör açıp o klasörde komut ekranını (Terminal) açın ve aşağıdaki komutu çalıştırın.

npm init

Bu komutu çalıştırdıktan sonra oluşturduğunuz Node.js projesi ile ilgili bir kaç soru soracak bunları doldurup veya boş geçerek ilerleyin. Aşağıdaki örneği inceleyebilirsiniz.

NodeJS Mail Server Kurulumu

Bu işlemi tamamladıktan sonra mail server ve temp-mail örneği için gerekli kütüphaneleri yüklüyoruz. Aşağıdaki komutları sırayla çalıştırarak bu kütüphaneleri kurabilirsiniz.

npm i express --save
npm i smtp-server --save
npm i mailparser --save

Gerekli kütüphaneleri kurduktan sonra klasörde index.js adında bir dosya oluşturun ve oluşturduğunuz dosyayı kullandığınız kod editörü ile açın.

İlk yapmamız gereken yüklediğimiz kütüphaneleri projeye dahil etmek bunun için aşağıdaki kodu dosyanın en üst satırına ekleyebilirsiniz.

const SMTPServer = require("smtp-server").SMTPServer;
const parser = require("mailparser").simpleParser;
const express = require('express');

Gerekli kütüphaneleri projeye dahil ettikten sonra aşağıdaki kod ile mail server oluşturup mail almaya başlayabilirsiniz.

const server = new SMTPServer({
    onData(stream, session, callback) {
        parser(stream, {}, (err, parsed) => {
            if (err) {
                console.log("Error:", err)
                return;
            }

            console.log(parsed)
            stream.on("end", callback)
        })
    },
    disabledCommands: ['AUTH']
});

server.listen(25, "0.0.0.0")

Bu kodu da index.js dosyamıza ekledikten sonra server’ı başlatmak için terminale aşağıdaki komutu yapıştırın.

node index.js

Server’ı başlattıktan sonra alan adınıza gelen tüm mailler terminal ekranına düşecektir. Evet mail ön eki fark etmeksizin gelen tüm mailleri bu şekilde okuyabilirsiniz. Bu şekilde basit bir Node.js mail server kurabilirsiniz. Kurduğumuz server’ı kullanarak basit bir Temp-Mail (10 Minute Email) örneği hazırladım kodlarını aşağıdan inceleyebilirsiniz.

let inbox = [];

const server = new SMTPServer({
    onData(stream, session, callback) {
        parser(stream, {}, (err, parsed) => {
            if (err) {
                console.log("Error:", err)
                return;
            }

            let mail = {
                messageId: parsed.messageId,
                from: parsed.from.text,
                to: parsed.to.text,
                subject: parsed.subject,
                html: parsed.html,
            }

            inbox.push(mail);
            stream.on("end", callback)
        })
    },
    disabledCommands: ['AUTH']
});

server.listen(25, "0.0.0.0")

const app = express()

app.get('/inbox/:mail', function (req, res) {
    let inbox = inbox.filter(x => x.to == req.params.mail + "@alanadiniz.com");
    if (inbox) {
        res.json(inbox);
    } else {
        res.send(":)");
    }
})

app.listen(80, function () {
    console.log('Sunucu çalışıyor...');
});

Koddaki alanadiniz.com kısmını kendi alan adınız ile değiştirip kullanmaya başlayabilirsiniz. Server’ı başlattıktan sonra mail.alanadiniz.com/inbox/ornek linkine girdiğinizde [email protected] adresine gelen tüm mailler JSON formatında listelenecektir.

JavaScript ile ilgili başka bir makaleme göz atın: JavaScript Local Storage ve Session Storage Kullanımı