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
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.
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 find = inbox.filter(x => x.to == req.params.mail + "@alanadiniz.com");
if (find) {
res.json(find);
} 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.
Node.js ile mail göndermek istiyorsanız Node.js ile Mail Gönderme İşlemi isimli makaleme göz atabilirsiniz.
JavaScript ile ilgili başka bir makaleme göz atın: JavaScript Local Storage ve Session Storage Kullanımı
abi sunucu ip sini nasıl bulucam
Sunucuyu aldığınız firmanın panelinden görebilirsiniz.
Merhabalar, domain ayarlarını yaptım lakin sunucu domainine mail.alanadi.com mu yazacağım yoksa alanadi.com mu? Orayı anlayamadım, teşekkürler.
Merhaba, mail.alanadi.com şeklinde değeri mail server’ınızın IP adresi olan bir A Kaydı oluşturun ardından mail.alanadi.com olan bir MX kaydı oluşturun. Örnek makalede mevcut fotoğrafı inceleyebilirsiniz.