Mailx bir SMTP geçişi kullanarak posta gönderiyor mu veya doğrudan hedef SMTP sunucusuna mı bağlanıyor?


30

Aşağıdaki komutu kullanarak bir posta gönderdiğimi varsayalım:

mailx person@x.com

daha sonra mailx önce postaları iletmek için ISS'min SMTP sunucusunu bulmaya çalışır ya da doğrudan bağlanır mı? Bilgisayarımın ortak bir IP adresine sahip olup olmamasına veya NAT'ın arkasında olmasına bağlı mıdır. Bilgisayarımdaki mailx ayarlarını nasıl kontrol edebilirim? Tcpdump kullanarak bunu nasıl doğrulayabilirim?

Yanıtlar:


29

Geleneksel olarak, Unix mailve türevleri (ve diğer birçok Unix aracı) /usr/bin/sendmail, neredeyse tüm posta aktarım aracıları (MTA'lar - postfix, exim, courier ve tabii ki sendmail) tarafından sağlanan arayüzü kullanır .

Yani, mailprogram herhangi bir ağ protokolünü konuşmuyor - mesajı sendmailstdin aracılığıyla besliyor ve gerçek teslimatı gerçekleştirmesini sağlıyor. (Bu, bazı postaların SMTP, bazılarının UUCP, bazılarının BITNET kullandığı günlere dayanır.)

Bir mesaj sıraya alındıktan sonra sendmail, MTA, SMTP veya başka bir şey aracılığıyla gerçek mesaj aktarımını gerçekleştirir. Yapılandırmaya bağlı olarak, doğrudan hedef MTA'ya bağlanabilir veya başka bir ana bilgisayardan (aynı zamanda smarthost olarak da bilinir) posta iletebilir.

Doğrudan bağlantı sunucularda daha yaygındır; smarthost üzerinden röle, ev bağlantılarındaki kişisel bilgisayarlarda daha yaygındır - Gmail veya ISS / iş e-posta hesabınızı iletmek, "dinamik IP" istenmeyen posta önleme filtrelerini önlemek için önemlidir.

(Gibi bazı MTAs esmtpveya nullmailerev kullanıcıları için özel olarak inşa edilir ve daima Bunlar posta alma desteklemez. Bir relayhost kullanmak ve kaynakları üzerinde çok daha hafiftir.)

mailx → [/ usr / bin / sendmail] → yerel MTA kuyruğu → [SMTP] → alıcı MTA → alıcı gelen kutusu
mailx → [/ usr / bin / sendmail] → yerel MTA kuyruğu → [SMTP] → Gmail veya ISS / çalışma sunucuları → [SMTP] → alıcı MTA → alıcı gelen kutusu

Diğer programlar, çoğunlukla Thunderbird veya Outlook gibi kullanıcı dostu grafik istemciler, her zaman doğrudan sizin adınıza iletiyi ileten bir röle / smarthost SMTP sunucusuna (yine genellikle Gmail veya ISS / çalışma SMTP sunucusuna) bağlanır.

Yerel SMTP desteği heirloom-mailxgeleneksel olarak mevcut , ancak mevcut değil bsd-mailx.

uygulama → [SMTP] → Gmail veya ISS / çalışma sunucuları → [SMTP] → alıcı MTA → alıcı gelen kutusu

Üçüncü yöntem - doğrudan alıcının sunucusuna bağlanma - neredeyse hiç kullanılmaz ve hiçbir MUA desteklemez. Kişisel bilgisayarlarda, bu mesajın kullanılması mesajınızın reddedilmesine neden olur (virüslü ev kullanıcısı IP adreslerinden çok fazla spam gönderilir).

app → [SMTP] → alıcı MTA → spam filtresi tarafından yakalandı

1
Linux'ta MTA'mı nasıl bulabilirim?
Rohit Banga,

1
@ iamrohitbanga 1) Kurulu paketlerin listesini kontrol edin. (Tüm dağıtımlar varsayılan olarak bir MTA ile gelmez.)
yerçekimi

1
@iamrohitbanga 2) Bunu zaten cevapladım. Outlook, genellikle kişisel bir bilgisayarda evde kullanılır ve çoğu posta sunucusu, ev kullanıcılarının adreslerinden gelen mesajları reddeder (bu kişilerden gelen yüksek spam oranı nedeniyle). Bu yüzden kurumsal bir sunucu üzerinden geçiş yapmak gerekiyor.
yerçekimi

1
@ iamrohitbanga 3) "veya" "her ikisinden de değil" ifadesinden biri anlamına gelir. Gmail’i birincil posta hesabı olarak kullananlar, Gmail’in sunucuları üzerinden posta gönderir. ISP’lerinde posta kutusu olanlar, ISP’lerin sunucularını kullanır.
yerçekimi

1
@iamrohitbanga 4) Çünkü "üçüncü yöntem" mailx kullanmıyor . Cevabımın üstünde açıklandığı gibi bir MTA kullanır. Ve bir kez daha, kurumsal bir İnternet bağlantınız yoksa, doğrudan bilgisayarınızdan (aktarmasız) gönderilen postaların atılması çok muhtemeldir.
yerçekimi

31

mailx SMTP kullanabilir. Bu yapılandırma dosyası ~ / .mailrc

Bir örnek Gmail'in SMTP kullanarak mailx .

Configure, tek bir komutta bile olabilir:

mailx -v -s "$EMAIL_SUBJECT" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://smtp.gmail.com:587 \
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
-S smtp-auth-user=$FROM_EMAIL_ADDRESS \
-S smtp-auth-password=$EMAIL_ACCOUNT_PASSWORD \
-S ssl-verify=ignore \
-S nss-config-dir=~/.mozilla/firefox/xxxxxxxx.default/ \
$TO_EMAIL_ADDRESS

Normal bir SMTP sunucusu kullanılıyorsa, çok daha kolaydır ( burada ayrıntılı bir giriş kısmına bakın ):

mailx -v -s "$EMAIL_SUBJECT" \
-S smtp=smtp://smtp.example.com
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
$TO_EMAIL_ADDRESS

Bunları mailx'in yapılandırma dosyasına da koyabilirsiniz ~ / .mailrc


Bunun varsayılan mailx olmayan yadigarı-mailx'e bağlı olduğunu unutmayın.
Scott

@Scott: Evet. Ancak Linux dağıtımına bağlıdır. Bazı sistemlerde, varsayılan, yadigarı değildir (örneğin Ubuntu: fclose.com/b/linux/1411/… . 3 mailx sürümü var gibi görünüyor). Fedora, OpenSUSE gibi bazılarında varsayılan, "özellik bakımından zengin" "yadigarı-postax" dır.
ericzma

@ ericayim Heirloom-mailx'in en iyisi olduğunu tahmin ediyorum / bunu yapabilen tek mailx'in heirloomu (komut satırında smtp sunucusundan ve smtp sunucusundan)? Varsayılan olarak yüklü olmasa da Debian'da iyi çalışıyor. Debian posta adresinde / usr / bin / bsd-mailx e bağlanan / etc / alternative / mailx 'e bağlanan debian, / etcr / bin / bsd-mailx' e bağlanan heirloom-mailx 'i kurduktan sonra / usr / bin / heirloom-mailx' e bağlanır ve güzel çalışır
barlop 26:14

@ barlop Bulgunuz benimkilerle uyumlu: varis-mailx bsd-mailx çalışmıyorken çalışır. Diğer çalışma uygulamalarından henüz haberdar değiliz.
ericzma

CentOS 6.7, Heirloom mailx 12.4'ü kullanıyor
Joshua Grigonis,

3

Gönderen mailx(1)adam sayfasında AÇIKLAMA bölüm, Dize Seçenekler alt bölüm:

   smtp   Normally, mailx invokes sendmail(8) directly to  transfer
          messages.  If the smtp variable is set, a SMTP connection
          to the server specified by the value of this variable  is
          used  instead.

Bu beni biraz karıştı. daha ayrıntılı olabilir misin?
Rohit Banga,

Uhh ... sendmailbu seçenek ayarlanmadıkça kullanır .
Ignacio Vazquez-Abrams,

1

sendmail / postix gibi yerel mta olmayan bir alternatif var.

debian paket ssmtp

rpm açıklamasından gelen bilgiler:

Summary     : Extremely simple MTA to get mail off the system to a Mailhub
URL         : http://packages.debian.org/stable/mail/ssmtp
License     : GPLv2+
Description : A secure, effective and simple way of getting mail off a system to your mail
            : hub. It contains no suid-binaries or other dangerous things - no mail spool
            : to poke around in, and no daemons running in the background. Mail is simply
            : forwarded to the configured mailhost. Extremely easy configuration.

hth

Stefan K.


1
Neredeyse ... ssmtp MTA benzeri bir SMTP istemcisidir. / Usr / bin / sendmail gibi davranır, ancak doğrudan belirli bir alanın MX kaydına bağlanmak yerine, bu görevi ssmtp çalıştıran makineye erişilebilir bir SMTP sunucusuna (genellikle kullanıcı adı / şifre ile) gönderir. Bu, ADSL dinamik IP aralıkları, tehlikeli barındırma sağlayıcıları vb. Gibi yüksek spam IP aralıklarından e-posta gönderen sistemler için özellikle yararlıdır.
Andre de Miranda
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.