Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Mail Gönderiminde User Authentication Metodu
#1
Normal olarak mail gonderme işlemini aşağıdaki gibi  yapabiliyorduk. ilk ssl de olmadan sorunsuz gonderim yapılabiiliyordu. Ama kurumda güvenlik ile ilgili bir değişiklik yapıldığından mailler gönderilememeye başlandı. ilk zamanlar zaman aşımı hatası veriyordu. İlgili birim User authentication  metoduyla gönderim yapmamız gerektiğini söylüyor. Ama User authentication metodu neyi ifade ediyor anlayamadım. bir çok deneme yaptım ama sorunu geçemedim bir türlü. ssl devreye aldık, AuthType  tipini değiştirdim ama sorun düzelmedi. en son aşağıdaki gibi bir hata alıyoruz. 


Konu hakkında fikri olan var mı acaba?
1?ui=2&ik=306d30dd03&attid=0.1&permmsgid...k&disp=emb
function SMTPbaglan:Boolean;
  begin
      SMTP.AuthType := satDEFAULT;
      SMTP.Host     := 'smtp.test.com' ;
      SMTP.Port     := 587';
      SMTP.Username := 'UserName';
      SMTP.Password := '1234';
      MailMessage.From.Address := 'test@test.com'
      MailMessage.From.Name:='test' ;

      if SSLAktif then
       begin
        SSLIOHandler.DefaultPort := 0;
        SSLIOHandler.SSLOptions.Method := sslvTLSv1;
        SSLIOHandler.SSLOptions.Mode := sslmUnassigned;
        SSLIOHandler.SSLOptions.VerifyMode := [];
        SMTP.IOHandler := SSLIOHandler;
        SMTP.ConnectTimeout := 10000;
       end
      else
        SMTP.IOHandler := nil;

      if SMTP.Host ='' then
      begin
        Result := False;
          ShowMsg('Mail Ayarlarınızı Yapınız');
      end
      else
        Result := True;
      if not SMTP.Connected then SMTP.Connect;
  end;


.....

     try     
        SMTP.Send(FSDM.MailMessage);        
       Except On E:Exception do
         ShowMsg('Mail Gönderilemedi. Nedeni:'+E.Message);
       end;
Cevapla
#2
BT biriminiz proxy kullanmanız, proxy auth konusunu ifade etmiştir diye değerlendiriyorum.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#3
(06-08-2020, Saat: 15:46)mrmarman Adlı Kullanıcıdan Alıntı: BT biriminiz proxy kullanmanız, proxy auth konusunu ifade etmiştir diye değerlendiriyorum.

tam anlayamadım bende kurumdaki ilgili birimin cevabı "Uygulama sunucusunun mail atma yetkisi bulunmaktadır. Test sonucuda aşağıdaki gibidir başarılı iletilmektedir. Mail gönderimlerini uygulamanın sunucucu üzerinden göndermesi gerekir, client tarafına relay yetkisi vermek Güvenlik açığıdır"  

IT cilerle anlaşmak çok zor.
Cevapla
#4
Anladığım odur ki BT biriminin "Uygulama Sunucusu mail atma yetkisi" dediği kendilerini kast ediyorlar. Yani kurumunuzdaki Exchange Server ile irtibatı olan siz ve diğer çalışanlar Outlook üzerinden açtıkları oturum ile mail gönderip alabiliyorlar. Bunun denetimini "Uygulama Sunucusu" yapıyor.  

Client yani sizler bilgisayarlardan bu sunucu size IP bazlı yetki vermediği sürece SMTP erişimlerinin önünü kesmiş görünüyor. Eskiden Anonymous olan yetki şimdi Oturum ile elde ediliyor.
Bu durumda size önerim, bir sunucu bilgisayar oluşturup, buraya özel yetki istemeniz. Ardından da eğer başka kullanıcılarınız da varsa, onların gönderilerini bir veritabanı altında biriktirip bu eposta taleplerini tek noktadan yollamanız olacaktır.

* Kendim de kurumumda email konusunda benzer bir kısıtlama nedeniyle toplu mesajları Outlook yazılımının bizzat kendisini bir tünel olarak kullanarak hallediyorum.

- Vefat ilanları, Kan İhtiyacı, interaktif SMS talepleri, görevler için üretilen Excel raporları vb. EMAIL otomasyonu için projemde kurum SMTP sunucusunu kullanmak istemiştim. Benzer şekilde güvenlik gerekçesi ile SMTP mail gönderimine kapalı olduğu bildirilince OleAutomation ile "Outlook.Application" create ederek OUTLOOK üzerinden yapmak durumunda kalmıştım.

* Eğer sorununuz çözülmezse ve sizde de Exchange server ile Outlook erişiminiz varsa o noktada bildirin "Outlook.Application" üzerinden yardımcı olmaya çalışalım. Gönderilen epostaları projeniz içerisinden aşağıdaki gördüğünüz şekilde sınıflandırılmış halde klasör yaratma ve orada barındırma imkanı da oluyor. 

* Unutmadan bildireyim, kendi adımla neden eposta göndereyim diye bir soru akla gelebilir : Gönderen kısmında sizin isminiz değil, resimde de en alttaki görünen "Prodüksiyon (BİLGİ)" veya "Seslendirme (BİLGİ)" şeklindeki Vekil (Proxy) atanmış hesaplardan gönderiliyor.  


cjsom1wzkiorcfrdzs24.png
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#5
smtp relay i uzak ip ye kapatmışlar demekki, sadece localhost dan local smtp ye bağlantı erişimi var,
bu sebeple sen smtp component üzerinden değilde pop3 üzerinden bağlanıp, gerçekli bir kullanıcı ile oturum açıp maili pop servera bırakmalısın, o zaten localhost daki smtp ye deliver edip yani /var/spool/queue göndertecekdir.

aslında smtp yede bağlantı esnasında authetication veya white list ip tanımlanabilir, hiç bişi yapamıyorsa iptables den -j accept eklerdi sizin ip lere. sizin sistemci uğraşmamak için öyle demiş kanımca..
Cevapla
#6
Merhaba,
Çözüm için Tek çare kurum protokollerinden bağımsız ve sorunsuz çalışan Google Cloud Mail yapısı veya benzeri (daha önce @Halil Han Badem in paylaştığı bir çözüm: sendinBlue API - Delphi) bir mimariyi kullanmak.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#7
(06-08-2020, Saat: 23:26)hayalyilmaz43 Adlı Kullanıcıdan Alıntı: smtp relay i uzak ip ye kapatmışlar demekki, sadece localhost dan local smtp ye bağlantı erişimi var,
bu sebeple sen smtp component üzerinden değilde pop3 üzerinden bağlanıp, gerçekli bir kullanıcı ile oturum açıp maili pop servera bırakmalısın, o zaten localhost daki smtp ye deliver edip yani /var/spool/queue göndertecekdir.

aslında smtp yede bağlantı esnasında authetication veya white list ip tanımlanabilir, hiç bişi yapamıyorsa iptables den -j accept eklerdi sizin ip lere. sizin sistemci uğraşmamak için öyle demiş kanımca..

Aşağıdaki durumla ilgili inceleyebileceğim bir sayfa var mı? "pop3 üzerinden bağlanıp pop server bırakma ve devamında gönderme" durumu ile ilgili bu tarz bişey sorunu çözebilir gibi. Ama nasıl yapılacağı ile ilgili bir kaynak bulamadım yada nasıl arayacağım bilemedim. En son çare db ye yazacağım izinli sunucundanda tarayarak belirli zamanlarda gönderim sağlatacağımda anlık gönderim yapabileseydim daha hoş olacak sanki. 

bu sebeple sen smtp component üzerinden değilde pop3 üzerinden bağlanıp, gerçekli bir kullanıcı ile oturum açıp maili pop servera bırakmalısın, o zaten localhost daki smtp ye deliver edip yani /var/spool/queue göndertecekdir.
Cevapla
#8
indy nin zaten pop3 componenti var ssl desteğide var, eğer ssl desteği winde çalışmıyorsa yanlış ssleasy gibi dll sürümüne sahipsin exception a uğruyorsa ssl bağlantında, eğer sunucu seni ssl e mecbur kılmıyorsa zaten öyle bir zorunluğun yok plain text üzerindende yollayabilirsin autheticationdan sonra.


Uses IdMessage;

IdPOP31.SendMsg(AMsg: TIdMessage; AHeadersOnly: Boolean = False);


 
IdPOP31.Username := mail;
  IdPOP31.Password := mail_pass;
 IdPOP31.Host := mail_host;
 IdPOP31.Port := 110;

 IdPOP31.Connect;

 if IdPOP31.Connected = True then   
 begin
   IdMessage1.Subject := ' başlık'; 
   IdMessage1.Recipients.EMailAddresses := 'alici@mail.com';
   IdMessage1.From.Address := "gönderen@mail.com";
   IdMessage1.Body.Text := 'mesaj metni';
   IdMessage1.Date := StrToDate('27.02.2012'); // gönderim tarihi

   IdPOP31.SendMsg(IdMessage1);
   
   IdPOP31.Disconnect;
 end

gibi bir yol izleyip deneyebilirsin googlede örnekleri vardı, bunuda oradan buldum
Cevapla
#9
(08-08-2020, Saat: 00:53)hayalyilmaz43 Adlı Kullanıcıdan Alıntı: indy nin zaten pop3 componenti var ssl desteğide var, eğer ssl desteği winde çalışmıyorsa yanlış ssleasy gibi dll sürümüne sahipsin exception a uğruyorsa ssl bağlantında, eğer sunucu seni ssl e mecbur kılmıyorsa zaten öyle bir zorunluğun yok plain text üzerindende yollayabilirsin autheticationdan sonra.


Uses IdMessage;

IdPOP31.SendMsg(AMsg: TIdMessage; AHeadersOnly: Boolean = False);


 
IdPOP31.Username := mail;
  IdPOP31.Password := mail_pass;
 IdPOP31.Host := mail_host;
 IdPOP31.Port := 110;

 IdPOP31.Connect;

 if IdPOP31.Connected = True then   
 begin
   IdMessage1.Subject := ' başlık'; 
   IdMessage1.Recipients.EMailAddresses := 'alici@mail.com';
   IdMessage1.From.Address := "gönderen@mail.com";
   IdMessage1.Body.Text := 'mesaj metni';
   IdMessage1.Date := StrToDate('27.02.2012'); // gönderim tarihi

   IdPOP31.SendMsg(IdMessage1);
   
   IdPOP31.Disconnect;
 end

gibi bir yol izleyip deneyebilirsin googlede örnekleri vardı, bunuda oradan buldum

teşekkürler, yarın test exe siyle kurumda deneyeceğim.
Cevapla
#10
(09-08-2020, Saat: 01:02)samsaros@gmail.com Adlı Kullanıcıdan Alıntı:
(08-08-2020, Saat: 00:53)hayalyilmaz43 Adlı Kullanıcıdan Alıntı: indy nin zaten pop3 componenti var ssl desteğide var, eğer ssl desteği winde çalışmıyorsa yanlış ssleasy gibi dll sürümüne sahipsin exception a uğruyorsa ssl bağlantında, eğer sunucu seni ssl e mecbur kılmıyorsa zaten öyle bir zorunluğun yok plain text üzerindende yollayabilirsin autheticationdan sonra.


Uses IdMessage;

IdPOP31.SendMsg(AMsg: TIdMessage; AHeadersOnly: Boolean = False);


 
IdPOP31.Username := mail;
  IdPOP31.Password := mail_pass;
 IdPOP31.Host := mail_host;
 IdPOP31.Port := 110;

 IdPOP31.Connect;

 if IdPOP31.Connected = True then   
 begin
   IdMessage1.Subject := ' başlık'; 
   IdMessage1.Recipients.EMailAddresses := 'alici@mail.com';
   IdMessage1.From.Address := "gönderen@mail.com";
   IdMessage1.Body.Text := 'mesaj metni';
   IdMessage1.Date := StrToDate('27.02.2012'); // gönderim tarihi

   IdPOP31.SendMsg(IdMessage1);
   
   IdPOP31.Disconnect;
 end

gibi bir yol izleyip deneyebilirsin googlede örnekleri vardı, bunuda oradan buldum

teşekkürler, yarın test exe siyle kurumda deneyeceğim.

umarım işinizi görür, bende merak ediyorum atabildinizmi Smile

eğer atamıyorsanız ve o sunucu ile aynı network içinde iseniz, yani sunucunun nete çıktığı ip adresi ile, sizin iç ağdaki bilgisayarınızdan nete çıktığınız ip adresi aynı ise, bunun anlamı, domain administrator mx için geçerli sender TXT ptr -> v=spf1 olarak kendi ip adresini (yani sizin dış ip adresinizi) eklemiş demekdir, bunu mxtool dan domaini girerek kontrol edin, haliyle doğrudan siz maili atmak istediğiniz uzak adrese (sunucu ile sizin diş ip adresinizin aynı olması gerekir) örneğin gmail. mx server adresini alıp, yine indy smtp componenti ile secure bağlantı açıp, maili uzak mail sunucusunda bırakabilirsiniz, size deny verilmez spf kuralından ötürü. sender adresinide canınız ne istiyorsa verebilirsiniz, spoof edebilirsiniz.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  sms gönderiminde türkçe karakter sorunu erdogan 2 750 18-03-2020, Saat: 16:27
Son Yorum: erdogan
  HHBMailComponent - Kolay Mail Gönderim Bileşeni [Delphi] Halil Han BADEM 38 13.429 23-01-2020, Saat: 09:18
Son Yorum: SimaWB
Information rest debugger ile authentication hatası[ÇÖZÜLDÜ]] yokbi 2 1.046 25-12-2019, Saat: 17:02
Son Yorum: yokbi
  Soap Serverd uygulamasında http ile mail yhackup 4 1.774 18-02-2019, Saat: 08:40
Son Yorum: yhackup
  [ÇÖZÜLDÜ] Google Calendar API Server tipi Erişim Metodu hakkında tecrübesi olan mrmarman 41 12.983 01-02-2019, Saat: 09:30
Son Yorum: Bay_Y



Konuyu Okuyanlar: 1 Ziyaretçi