IMAP/SMTP Ayarlarını Otomatik Algılayan PHP Aracı
IMAP/SMTP e-posta ayarlarını PHP ile otomatik algılayan bu araç, toplu kurulumlarda BT ekiplerine hızlı ve güvenilir otomasyon sağlar.
2024-10-15E-posta Yapılandırması: BT Ekiplerinin Kabusları
Şirkete 50 yeni çalışan geldi. Her birinin e-posta istemcisi yapılandırılacak. Outlook mu, Apple Mail mi? IMAP mı, POP3 mü? SSL mi, STARTTLS mi? Sunucu adresi nedir? Port 993 mü, 143 mü? Bu soruların cevabını bulmak için belge taramak, destek hattını aramak ya da deneme-yanılma yapmak gerekiyor — ve bu süreç her çalışan için tekrarlanıyor.
Bir şirkete 50 yeni çalışan geldiğinde BT ekibinin başı belaya giriyor. Her çalışan için e-posta istemcisini elle yapılandırmak; sunucu adresini, port numarasını, SSL ayarını, kimlik doğrulama yöntemini tek tek bulmak ve girmek saatler alıyor. Üstelik her mail sağlayıcısının farklı kombinasyonlar kullandığını düşündüğünüzde iş iyice içinden çıkılmaz hale geliyor.
Gmail mi? imap.gmail.com:993 SSL. Yandex mi? imap.yandex.com:993. Şirket içi Exchange mi? Sunucu adı bile farklı olabiliyor. Bu bilgiye ulaşmak için belgeleri taramak, destek hatlarını aramak ya da deneme-yanılma yapmak gerekiyor.
Biz bu süreci tamamen otomatize eden bir PHP aracı geliştirdik.
PHP 8.0+ ile Otomatik Algılama Mantığı
Araç temel olarak şunu yapıyor: e-posta adresini alıyor, domain’i çıkarıyor, ardından o domain için bilinen yaygın sunucu konfigürasyonlarını deniyor. Bağlantı başarılı olana kadar farklı kombinasyonları test ediyor.
<?php
declare(strict_types=1);
class EmailConfigDetector
{
private array $imapCandidates = [
['host' => 'imap.{domain}', 'port' => 993, 'ssl' => true],
['host' => 'imap.{domain}', 'port' => 143, 'ssl' => false],
['host' => 'mail.{domain}', 'port' => 993, 'ssl' => true],
['host' => 'mail.{domain}', 'port' => 143, 'ssl' => false],
];
private array $smtpCandidates = [
['host' => 'smtp.{domain}', 'port' => 587, 'ssl' => 'tls'],
['host' => 'smtp.{domain}', 'port' => 465, 'ssl' => 'ssl'],
['host' => 'smtp.{domain}', 'port' => 25, 'ssl' => false],
['host' => 'mail.{domain}', 'port' => 587, 'ssl' => 'tls'],
];
public function detect(string $email): array
{
$domain = substr(strrchr($email, '@'), 1);
return $this->testCombinations($domain);
}
}
8 Protokol Kombinasyonunu Paralel Test Etmek
Araç toplamda 8 farklı protokol kombinasyonunu test ediyor: 4 IMAP + 4 SMTP varyasyonu. Bunları sıralı test etmek çok yavaş olur — her bağlantı denemesi zaman aşımına kadar bekleyecektir. Çözüm paralel test.
PHP’nin pcntl_fork() veya fiber (PHP 8.1+) yapılarıyla eşzamanlı bağlantı testleri yapılabiliyor. Daha basit ve taşınabilir bir yaklaşım için curl_multi kullanıyoruz:
private function testCombinations(string $domain): array
{
$results = [];
$handles = [];
foreach ($this->getAllCandidates($domain) as $key => $candidate) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $candidate['url']);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 8);
$handles[$key] = ['handle' => $ch, 'config' => $candidate];
}
$mh = curl_multi_init();
foreach ($handles as $item) {
curl_multi_add_handle($mh, $item['handle']);
}
// Tüm bağlantıları eşzamanlı çalıştır
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh);
} while ($running > 0);
return $this->collectResults($handles, $mh);
}
Gerçek Zamanlı İlerleme Takibi ve Loglama
Toplu hesap kurulumu yaparken ekran başında bekleyen BT personeli için anlık geri bildirim şart. Her test denemesini ve sonucunu anında ekrana yansıtıyoruz:
[2024-10-15 14:23:01] TEST: imap.example.com:993 (SSL) ... BAŞARILI ✓
[2024-10-15 14:23:01] TEST: smtp.example.com:587 (TLS) ... BAŞARILI ✓
[2024-10-15 14:23:02] TEST: pop3.example.com:995 (SSL) ... ZAMAN AŞIMI ✗
[2024-10-15 14:23:02] TEST: mail.example.com:143 ... BAĞLANTI REDDEDİLDİ ✗
SONUÇ:
IMAP: imap.example.com:993 (SSL/TLS)
SMTP: smtp.example.com:587 (STARTTLS)
POP3: Desteklenmiyor
Loglar ayrıca bir dosyaya da yazılıyor. Audit Log için önemli — hangi hesapta ne zaman hangi ayarlar tespit edilmiş, hepsi kayıt altında.
Özel Sağlayıcı Veritabanı
Araç ayrıca popüler e-posta sağlayıcıları için önceden tanımlı konfigürasyonlar içeriyor. Gmail, Outlook, Yahoo, Yandex, Apple iCloud gibi sağlayıcılar için gerçek bağlantı testi yapmadan doğrudan bilinen ayarları döndürüyor. Bu sayede çok daha hızlı sonuç alınıyor.
private array $knownProviders = [
'gmail.com' => [
'imap' => ['host' => 'imap.gmail.com', 'port' => 993, 'ssl' => true],
'smtp' => ['host' => 'smtp.gmail.com', 'port' => 587, 'tls' => true],
],
'outlook.com' => [
'imap' => ['host' => 'outlook.office365.com', 'port' => 993, 'ssl' => true],
'smtp' => ['host' => 'smtp.office365.com', 'port' => 587, 'tls' => true],
],
// ...
];
Toplu Hesap Kurulumunda Kazanılan Zaman
50 hesaplı bir kurulumu elle yapılandırmak ortalama 3-5 saat sürüyor. Bu araçla süreç şöyle işliyor:
- E-posta listesini CSV’den içe aktar
- Her adres için paralel algılama başlat
- Başarılı konfigürasyonları otomatik kaydet
- Başarısız olanlar için manuel inceleme raporu al
50 hesap için toplam süre: 8-12 dakika. İnsan müdahalesine gerek kalan oran genellikle %5’in altında — yalnızca çok alışılmadık kurumsal sunucu yapılandırmaları elle müdahale gerektiriyor.
Sonuç
E-posta sunucu yapılandırması gibi tekrarlayan ve hata yapmaya açık süreçleri otomatize etmek, BT ekiplerinin zamanını asıl önemli işlere ayırmasını sağlıyor. PHP 8.0+’ın modern özellikleri, bu tür ağ tabanlı otomasyon araçları için yeterince güçlü bir temel sunuyor.
50 hesap için 3-5 saati 8-12 dakikaya indirmek bu araçla mümkün — ve bu hesap sadece kurulum sırasında değil, her yeni personel dalgasında ve her sistem migrasyonunda tekrar kazanılır. Bu tür BT süreç otomasyonu, Barlas Dijital’in KOBİ ve kurumsal müşterilere sunduğu çözümlerin somut örneklerinden biridir: lisans maliyeti sıfır, şirkete özel, bakımı kolay.
Benzer komut satırı otomasyonu yaklaşımını BD Reparo projesindeki kurumsal Windows bakım akışlarında da kullandık. Benzer bir e-posta otomasyonu ihtiyacınız varsa veya mevcut BT süreçlerinizi hızlandırmak istiyorsanız bizimle konuşalım.
İlgili Hizmetler
Push bildirim, SMS, WhatsApp ve e-posta kanallarını tek merkezden yöneten güvenilir çok kanallı bildirim altyapısı kurun.
Browser Extension GeliştirmeChrome, Firefox ve Edge için iş akışı otomasyonu, veri toplama ve sistem entegrasyonu sağlayan özel tarayıcı eklentileri geliştirin.
CDN Kurulumu & Coğrafi OptimizasyonCloudflare CDN kurulumu, edge caching, DDoS koruması ve DNS optimizasyonuyla sitenizi küresel kullanıcılar için hızlandırın.
Cron Job & Zamanlanmış Görev YönetimiCron job ve zamanlanmış görev altyapısıyla raporlama, veri senkronizasyonu, yedekleme ve bakım işlerini güvenle otomatikleştirin.