smtp.Dial அதன் முகவரிக்கு புதிய இணைப்பைத் திறக்கிறது. HTTP CONNECT ப்ராக்ஸி வழியாக இணைப்பைப் பெற்ற பிறகு, அந்த ஏற்கனவே உள்ள ஸ்ட்ரீமை அதற்குப் பதிலாக smtp.NewClientக்கு அனுப்புங்கள்.

தனது சமர்ப்பிப்பு போர்ட்டில் STARTTLS தேவைப்படும் SMTP சேவையகத்திற்கு, ஒப்படைப்பு இப்படி இருக்கலாம்:

func smtpOverTunnel(conn net.Conn, mailHost string) (*smtp.Client, error) {
    client, err := smtp.NewClient(conn, mailHost)
    if err != nil {
        conn.Close()
        return nil, err
    }
    err = client.StartTLS(&tls.Config{
        ServerName: mailHost,
        MinVersion: tls.VersionTLS12,
    })
    if err != nil {
        client.Close()
        return nil, err
    }
    return client, nil
}

தொகுப்புகள் net, net/smtp மற்றும் crypto/tls. அழைப்பவர் இலக்கு SMTP ஹோஸ்ட் மற்றும் போர்ட்டுடன் ஏற்கனவே இணைக்கப்பட்ட சுரங்கத்தை வழங்குகிறார், ப்ராக்ஸியின் CONNECT பரிமாற்றம் நிறைவடைந்த நிலையில். ப்ராக்ஸிக்கு TCP மட்டும் திறப்பது போதாது: HTTP பதில் SMTP வாழ்த்து அல்ல.

mailHost என்பது SMTP சேவையகத்தின் ஹோஸ்ட்பெயர், போர்ட் இல்லாமல். SMTP அங்கீகாரம் மற்றும் சான்றிதழ் சரிபார்ப்புக்கு அந்த அடையாளத்தை வைத்திருங்கள். HTTPS ப்ராக்ஸிக்கான TLS இணைப்பு பாதையின் மற்றொரு பகுதியைப் பாதுகாக்கிறது.

திருப்பித் தரப்பட்ட கிளையண்ட் பயன்பாட்டின் ஏற்கனவே உள்ள SMTP அங்கீகாரம் மற்றும் மின்னஞ்சல் பரிவர்த்தனைக்குத் தயாராக உள்ளது. முடிந்ததும் அதை மூடுங்கள். டயலிங், CONNECT மற்றும் அடுத்தடுத்த நெறிமுறை செயல்பாடுகளை பயன்பாட்டின் காலக்கெடு கொள்கையால் வரம்பிடுங்கள்.

ப்ராக்ஸி தேர்ந்தெடுக்கப்பட்ட மின்னஞ்சல் போர்ட்டுக்கு CONNECT அனுமதிக்க வேண்டும். சில இதை போர்ட் 443 இல் உள்ள HTTPS இலக்குகளுக்கு மட்டுமே வரம்பிடுகின்றன. மறைமுக TLS உள்ள SMTPக்கு, STARTTLS வழங்குவதற்குப் பதிலாக NewClient அழைப்பதற்கு முன் இலக்கின் TLS அமர்வை நிறுவுங்கள்.

தொடர்புடைய கட்டுரைகள்