Net::SMTP 3.16 SOCKS ਜਾਂ ਪਹਿਲਾਂ ਤੋਂ ਜੁੜੇ ਸਾਕਟ ਲਈ ਕਨਸਟ੍ਰਕਟਰ ਪੈਰਾਮੀਟਰ ਦਸਤਾਵੇਜ਼ੀ ਨਹੀਂ ਕਰਦਾ। ਫਾਈਲ ਡਿਸਕ੍ਰਿਪਟਰ ਨੂੰ ਵਿਰਾਸਤੀ new_from_fd ਨਾਲ ਲਪੇਟਣਾ ਇਸ ਦਾ SMTP ਕਨਸਟ੍ਰਕਟਰ ਨਹੀਂ ਚਲਾਉਂਦਾ। ਸਫਲ SOCKS ਕਨੈਕਸ਼ਨ ਸਟ੍ਰੀਮ ਦਿੰਦਾ ਹੈ, ਸ਼ੁਰੂ ਕੀਤਾ ਮੇਲ ਸੈਸ਼ਨ ਨਹੀਂ।

ਸਧਾਰਨ SMTP ਲਈ, ਬਾਅਦ ਦੇ STARTTLS ਅੱਪਗ੍ਰੇਡ ਸਮੇਤ, ਸਰਵਰ ਪਹਿਲਾਂ ਬੋਲਦਾ ਹੈ:

SOCKS: connection to smtp.example.net:587 succeeds

server: 220 smtp.example.net ready
client: EHLO client.example.net
server: 250-smtp.example.net
server: 250-STARTTLS
server: 250 AUTH ...

ਇਹ ਯੋਜਨਾਬੱਧ ਹੈ; ਘੋਸ਼ਿਤ ਐਕਸਟੈਂਸ਼ਨ ਵੱਖਰੇ ਹੁੰਦੇ ਹਨ। ਸਵਾਗਤ ਆਪਣੇ ਆਪ ਕਈ ਲਾਈਨਾਂ ਤੱਕ ਫੈਲ ਸਕਦਾ ਹੈ: ਜਵਾਬ ਕੋਡ ਤੋਂ ਬਾਅਦ ਹਾਈਫਨ ਆਉਣ ’ਤੇ ਜਵਾਬ ਜਾਰੀ ਰਹਿੰਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਇਸ ਦੀ ਆਖਰੀ ਲਾਈਨ ਇਸ ਨੂੰ ਖ਼ਤਮ ਕਰਦੀ ਹੈ। EHLO ਤੋਂ ਪਹਿਲਾਂ ਪੂਰਾ ਸਵਾਗਤ ਵਰਤੋ। ਨਹੀਂ ਤਾਂ ਕਲਾਇੰਟ EHLO ਦੇ 250 ਦੀ ਉਡੀਕ ਵਿੱਚ ਪੁਰਾਣਾ 220 ਪੜ੍ਹ ਸਕਦਾ ਹੈ ਅਤੇ ਸਿਹਤਮੰਦ ਕਨੈਕਸ਼ਨ ’ਤੇ ਤਾਲ ਗੁਆ ਸਕਦਾ ਹੈ।

ਅੰਤਰਨਿਹਿਤ TLS ਦਾ ਕ੍ਰਮ ਵੱਖਰਾ ਹੈ: SOCKS ਕਨੈਕਸ਼ਨ, TLS ਹੈਂਡਸ਼ੇਕ, ਫਿਰ TLS ਅੰਦਰ SMTP ਸਵਾਗਤ। STARTTLS ਪੜ੍ਹਨਯੋਗ ਸਵਾਗਤ ਅਤੇ EHLO ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ, ਸਟ੍ਰੀਮ ਅੱਪਗ੍ਰੇਡ ਕਰਦਾ ਹੈ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਸਮਰੱਥਾਵਾਂ ਲੈਂਦਾ ਹੈ।

ਜਨਤਕ ਕਨਸਟ੍ਰਕਟਰ ਆਮ ਤੌਰ ’ਤੇ ਸਾਕਟ ਸੰਰਚਨਾ, ਸੰਭਾਲੇ ਕਨੈਕਸ਼ਨ ਪੈਰਾਮੀਟਰ ਅਤੇ ਸਵਾਗਤ ਜਾਣਕਾਰੀ, ਸ਼ੁਰੂਆਤੀ ਜਵਾਬ ਅਤੇ ਜਿੱਥੇ ਢੁਕਵਾਂ ਹੋਵੇ HELO ਫਾਲਬੈਕ ਨਾਲ EHLO ਸੰਭਾਲਦਾ ਹੈ:

use Net::SMTP;

my $smtp = Net::SMTP->new(
    'smtp.example.net',
    Port    => 587,
    Hello   => 'client.example.net',
    Timeout => 30,
) or die "SMTP connection failed: $@";

$smtp->starttls()
    or die "STARTTLS failed: " . $smtp->message;

ਇਹ ਜਨਤਕ ਉਦਾਹਰਨ STARTTLS ਵਰਤਦੀ ਹੈ ਅਤੇ SOCKS ਸੰਰਚਿਤ ਨਹੀਂ ਕਰਦੀ। ਸਰਵਰ ਨਾਮ ਮੇਲ ਮੰਜ਼ਿਲ ਚੁਣਦਾ ਹੈ; Hello ਕਲਾਇੰਟ ਦੀ SMTP ਪਛਾਣ ਦਿੰਦਾ ਹੈ। ਅੰਤਰਨਿਹਿਤ TLS ਲਈ ਦਸਤਾਵੇਜ਼ੀ SSL ਕਨਸਟ੍ਰਕਟਰ ਚੋਣ ਅਤੇ ਸੇਵਾ ਦਾ ਪੋਰਟ ਵਰਤੋ।

SendHello => 0 ਸਵੈਚਾਲਿਤ EHLO/HELO ਦਬਾਉਂਦਾ ਹੈ, ਸਵਾਗਤ ਪੜ੍ਹਨਾ ਜਾਂ ਟ੍ਰਾਂਸਪੋਰਟ ਬਣਾਉਣਾ ਨਹੀਂ। ਲਾਈਨ ਰੀਡਰ ਬੁਲਾ ਕੇ ਫਿਰ hello() ਬੁਲਾਉਣਾ ਵੀ ਸ਼ੁਰੂਆਤ ਦੀ ਦਸਤਾਵੇਜ਼ੀ ਬਦਲ ਨਹੀਂ ਹੈ: Net::Cmd ਆਪਣੇ ਹੇਠਲੇ-ਪੱਧਰੀ ਜਵਾਬ ਰੀਡਰਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਉਪਵਰਗ ਵਿਧੀਆਂ ਵਜੋਂ ਸ਼੍ਰੇਣੀਬੱਧ ਕਰਦਾ ਹੈ।

ਜੇ SOCKS ਲਾਜ਼ਮੀ ਹੈ, ਤਾਂ ਸਮਰਥਿਤ SOCKS ਇੰਟਰਫ਼ੇਸ ਵਾਲਾ ਕਲਾਇੰਟ ਚੁਣੋ ਜਾਂ ਕਿਸੇ ਖਾਸ Net::SMTP ਸੰਸਕਰਣ ਵਿਰੁੱਧ ਏਕੀਕਰਨ ਕਾਇਮ ਰੱਖੋ। ਨਿੱਜੀ ਫੀਲਡਾਂ ਦੀ ਨਕਲ ਕਰਨ ਦੀ ਥਾਂ ਉੱਪਰਲੇ ਕ੍ਰਮ ਨੂੰ ਇਸ ਦਾ ਇਕਰਾਰਨਾਮਾ ਮੰਨੋ। ਵੱਖਰੇ TCP ਅਡੈਪਟਰ ਨੂੰ ਵੀ ਸੁਚੇਤ TLS ਪਛਾਣ ਸੰਭਾਲਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ: ਸਰਟੀਫਿਕੇਟ ਨੂੰ ਅਸਲ ਮੇਲ ਸੇਵਾ ਦੀ ਪਛਾਣ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ, ਅਤੇ ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣ-ਪੱਤਰ SMTP ਲੌਗਇਨ ਤੋਂ ਵੱਖ ਰਹਿੰਦੇ ਹਨ।

ਸੰਬੰਧਿਤ ਲੇਖ