דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. SMTP to HTTP pip

SMTP to HTTP pip

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 2 כותבים 173 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • nigunN מנותק
    nigunN מנותק
    nigun
    כתב ב נערך לאחרונה על ידי nigun
    #1

    בהמשך לדיון כאן
    ניסיתי לבנות לעצמי בשביל הספורט שרת SMTP שמפנה את כל המידע ישירות לכתובת HTTP
    מצאתי פרוייקט שכתוב בGO, שאיתו אפשר לבנות שרת SMTP מאפס
    וכן יש שם תוסף לטיפול במיילים עם fastcgi
    לא כל כך הסתדרתי עם הפעלת קבצי PHP מהספריה הנ"ל, אז בניתי תוסף משל עצמי שמפנה הכל לכתובת HTTP המבוקשת.

    למי שרוצה להשתמש עם זה צריך קומפיילר של GO
    וקצת ידע בסיסי איך ליבא ספריות.
    יוצרים את הקובץ הבא

    package main
    
    import (
            "fmt"
    
            "github.com/flashmob/go-guerrilla"
            "github.com/flashmob/go-guerrilla/backends"
            fastcgi_processor "github.com/ynigun/httpmailpip"
    )
    
    func main() {
            done := make(chan bool)
    
            cfg := &guerrilla.AppConfig{
                    LogFile:      "stderr",
                    AllowedHosts: []string{"koshercode.dev"},
                    LogLevel:     "debug",
                    BackendConfig: backends.BackendConfig{
                            "save_process":     "HeadersParser|Debugger|FastCGI",
                            "validate_process": "FastCGI",
                            "HttpPipValidate":  "http://myurl.com:8090/validate",
                            "HttpPipSave":      "http://myurl.com:8091/save",
                                            },
            }
            sc := guerrilla.ServerConfig{
                    ListenInterface: "0.0.0.0:25",
                    IsEnabled:       true,
            }
            cfg.Servers = append(cfg.Servers, sc)
            d := guerrilla.Daemon{Config: cfg}
            d.AddProcessor("FastCGI", fastcgi_processor.Processor)
            err := d.Start()
    
    
            if err == nil {
                    fmt.Println("Server Started!")
            }
            <-done
    }
    
    

    בדוגמה הזאת מופעל שרת SMTP בפורט 25 בכתובת 0.0.0.0 (ככה אפשר לגשת לIP החיצוני)
    והדומיינים המורשים לקבלת מיילים מוגדרים ב AllowedHosts
    כשמתקבל מייל, השרת מתחבר לכתובת http://myurl.com:8090/validate לצורך אימות שמהשתמש קיים
    ע"י שהוא שולח את הנתונים rcpt_to=test%!k(MISSING)oshercode.dev בGET
    בדוגמה הזאת שלחתי מייל שנשלח לכתובת test@koshercode.dev
    (ואני לא יודע למה התווסף ה(MISSING) באמצע)

    אם השרת מקבל את התשובה PASSED
    הוא ממשיך לשלב הבא ושולח את כל הנתונים בPOST
    לכתובת http://myurl.com:8091/save
    עם הסטרינג הבא
    ContentType_0=application%2Fx-ini&Filename_0=ext.ini&body=%3Cdiv+dir%3D%22rtl%22%3E052702%3Cimg+src%3D%22https%3A%2F%2Fpxl-mailtracker.com%2Fpixel%2FsvpWQyo6UdrJ5o3q0pJs%3Frid%3DsvpWQyo6UdrJ5o3q0pJs%22+width%3D%221%22+height%3D%221%22+border%3D%220%22%3E%3C%2Fdiv%3E&helo=mail-qv1-f44.google.com&mail_from=sbb0799%40gmail.com&rcpt_to_0=test%40koshercode.dev&remote_ip=209.85.219.44&subject=test&tls_on=false
    (זה יצא קצת מבולגן אז אני ילך לא לפי הסדר)
    rcpt_to_0 = כתובת הנמען (במקרה ויש כמה אמור להיות גם rcpt_to_1 וכו')
    mail_from = כתובת השולח
    body = גוף ההודעה (זה מתקבל כHTML וקצת משתבש כששלוחים אותו כערך בPOST, אני לא יודע איך ממירים חזרה)
    subject = כותרת ההודעה
    Filename_0 = שם קובץ מצורף (בהמשך אני יראה איך אני שולח אותו בפועל)
    ContentType_0 = סוג הקובץ של Filename_0 (לא קריטי פשוט זה פונקציה שהיה לי אז דחפתי)
    helo = שם הדומיין ששלח את המייל
    remote_ip = כתובת הIP ששלח את המייל
    tls_on = האם TLS מופעל (במקרה שלנו לא, אפשר להוסיף את זה בהמשך)

    אם השרת SMTP מקבל את התגובה SAVED
    אז הוא מחזיר את התשובה לשולח שהמייל התקבל בהצלחה .

    יש כאן עוד הרבה פונקציות שעדיין לא הבנתי בדיוק מה זה אומר
    אז לכן לא מומלץ להשתמש בסקריפט הזה בפרודקשן.

    אשמח לשמוע תגובות, הצעות וכו'.

    עריכה:למי שרוצה לנסות בלי לההתקין
    אפשר לשלוח מייל לכל כתובת בדומיין koshercode.dev (זה לא משנה מה המשתמש כי אני מחזיר PASSED לכולם)
    ובכותרת לכתוב את הכתובת HTTP שאליו אתם רוצים להפנות את כל הפלט
    (לא להכניס שום דבר אחר רק את הכתובת).
    ובבקשה לא להכניס כתובת שגויים כי אז השרת שלי כנראה יפול 😵

    מייל: nigun@duck.com

    תגובה 1 תגובה אחרונה
    5
    • nigunN מנותק
      nigunN מנותק
      nigun
      כתב ב נערך לאחרונה על ידי
      #2

      אני רואה שגם בתחום בSMTP יש ספאם
      זה הסגנון של הלוג שקיבלתי אחרי שהשרת היה פתוח קצת זמן

      DEBU[53226] [0.0.0.0:25] Waiting for a new client. Next Client ID: 6 
      INFO[53226] Handle client [188.75.74.132]                 event=connect id=5
      DEBU[53226] Writing response to client: 
       20 scw-clever-swirles SMTP Guerrilla(unknown) #5 (1) 2020-02-14T07:28:31+02:00
      DEBU[53226] Client sent: ehlo SRVEDGE1                   
      DEBU[53226] Writing response to client: 
      250-scw-clever-swirles Hello
      250-SIZE 10485760
      250-PIPELINING
      250-ENHANCEDSTATUSCODES
       50 HELP
      DEBU[53226] Client sent: Rset                            
      DEBU[53226] Writing response to client: 
          2.1.0 OK
      DEBU[53226] Client sent: Mail from:<spameri@tiscali.it>  
      INFO[53226] Mail from                                     address=188.75.74.132 domain=tiscali.it event=mailfrom helo=SRVEDGE1 id=5
      DEBU[53226] Writing response to client: 
          2.1.0 OK
      DEBU[53226] Client sent: RCPT to:<spameri@tiscali.it>    
      DEBU[53226] Writing response to client: 
       54 4.1.1 Error: Relay access denied: tiscali.it
      DEBU[53227] Client sent: Quit                            
      DEBU[53227] Writing response to client: 
        1 2.0.0 Bye
      INFO[53227] Disconnect client                             event=disconnect id=5
      
      

      לא הבנתי בדיוק מה הם מנסים לעשות
      הם מנסים לשלוח מייל מspameri@tiscali.it לspameri@tiscali.it
      מה הם מנסים למצוא?
      שרת SMTP חינמי?

      מייל: nigun@duck.com

      י תגובה 1 תגובה אחרונה
      0
      • י מנותק
        י מנותק
        יוסף בן שמעון
        השיב לnigun ב נערך לאחרונה על ידי
        #3

        @nigun הם צריכים לשלוח את הספאם שלהם, וכדי שהמסננים לא יחסמו אותם הם מנסים לשלוח מכל שרת אפשרי

        תגובה 1 תגובה אחרונה
        3
        • nigunN nigun התייחס לנושא זה ב

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום