SMTP to HTTP pip



  • בהמשך לדיון כאן
    ניסיתי לבנות לעצמי בשביל הספורט שרת 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 שאליו אתם רוצים להפנות את כל הפלט
    (לא להכניס שום דבר אחר רק את הכתובת).
    ובבקשה לא להכניס כתובת שגויים כי אז השרת שלי כנראה יפול 😵



  • אני רואה שגם בתחום ב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 הם צריכים לשלוח את הספאם שלהם, וכדי שהמסננים לא יחסמו אותם הם מנסים לשלוח מכל שרת אפשרי


התחבר כדי לפרסם תגובה
 

49
מחובר

2.4k
משתמשים

7.7k
נושאים

90.5k
פוסטים

gardner photograph

סלולר כשר במחירים הנמוכים ביותר עם ובלי ניוד.

כנסו לאתר לקניה מקוונת, או בדקו סניף קרוב לביתכם.

מוצרים עם הנחה

לחצו פה כדי להגיע לרשימת מוצרים עם הנחה בקיאספי.

בהגעה דרך הלינק, ישנה הנחה בשלב התשלום בקופה!

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