Harici bir SMTP sunucusu kullanmak için sistem postası ayarlayabilir miyim?


72

Farklı bir smtp sunucusu üzerinden gönderilmek üzere bir linux kutusunda sistem postası kurmak mümkün müdür - belki de kimlik doğrulama ile mi? Eğer öyleyse, bunu nasıl yaparım?

Eğer net değilse, bir örnek verelim. Komut satırındaysam ve şunu yazın:

cat body.txt | mail -s "just a test" myfriend@hisdomain.com

Bunun G-posta gibi harici bir SMTP sunucusu aracılığıyla gönderilmesi mümkün mü?

"Komut satırından gmail’den posta göndermenin bir yolu" aramıyorum, bunun yerine tüm sistemi belirli bir SMTP sunucusu kullanacak şekilde yapılandırma seçeneği ya da bir SMTP sunucusundaki bir hesap (belki adresinden geçersiz kılınabilir) .


Aslında çoğu makinenin kurulma şekli. Aklında belirli bir MTA var mı? Değilse (buna “MTA nedir?” Dahildir), hangi dağıtımda çalışıyorsunuz?
Gilles

10.04 Ubuntu'dayım, ssmtp kurulumuyla ilgili bu yazıyı buldum , işe yarayacak gibi görünüyor. Çoğu makinenin nasıl kurulduğunu daha fazla açıklayabilir misiniz?
cwd

Yanıtlar:


71

SSMTP'yi kullanımı çok basit buldum.

Debian tabanlı sistemlerde:

apt-get install ssmtp

Ardından /etc/ssmtp/ssmtp.conf dosyasındaki yapılandırma dosyasını düzenleyin.

Gmail’inizi e-posta göndermek için kullanmak için örnek bir yapılandırma:

# root is the person who gets all mail for userids < 1000
root=your@email.com

# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587
AuthUser=your@gmail.com
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

Not : Sisteminizde "mail" komutunun bulunduğundan emin olun. mailutils paketi bunu Debian tabanlı sistemlerde sağlamalıdır.

Güncelleme : sSMTP'nin 'boşluk' veya '#' karakterli şifreleri kabul etmeyeceğini bildiren insanlar (ve farklı Linux dağıtımları için hata raporları) var. SSMTP sizin için çalışmıyorsa, durum böyle olabilir.


2
başkalarına not olarak ssmtp'yi ve sonra mailutils'i kurmanız gerekebilir. mailutils'in mail komutunu ayarladığını ve ssmtp'ye symlinks olduğunu düşünüyorum, böylece normal mailsözdizimini kullanabilirsiniz :)
cwd

1
@cwd Sadece Ubuntu 13.04'te test edildi. mailutilsPaket yüklemek zorunda değildim (ve otomatik olarak kurulmadı). ssmtpkullanıma hazır.
Pijusn

Bunu sadece bir BeagleBone Black'deki Debian'da başarıyla kullandım ve ilk önce mailutils'i kurmak zorunda kaldım.
Dave Nelson

14.04'te Kubuntu'da ssmtp'den sonra mailutils kurmak zorunda kaldı . Ancak ilk denemede çalıştı.
MariusMatutiae

6
ssmtp uzak sunucunun SSL / TLS sertifikasını mevcut debian, ubuntu ve redhat sürümlerinde doğrulamaz ve ayrıca sertifikanın ana bilgisayar adını da doğrulamaz. Bu önemli bir konudur, çünkü bu şifrelemeyi etkili bir şekilde kullanılamaz kılar ve şifreniz düz metin olarak iletilir ve herkes onu koklayabilir. ssmtp 2009'un en az 2009'dan beri aktif bir gelişim göstermedi. Dolayısıyla, giden e-postalarınız için kullandığınız e-posta hesabının güvenliğini önemsiyorsanız, bunun yerine ssmtp KULLANMAYIN, bunun yerine postfix (veya başka bir şey) kullanmayın: unix.stackexchange.com/ a / 118101/72087
Zulakis

23

İçin Postfix :

  • Harici posta geçişiniz için IP adresini /etc/hostsekleyin ve ona bir takma ad posta aktarımı ekleyin.
  • Postfix yapılandırmasını değiştirin:

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • Düzenle /etc/postfix/smtp_auth

    mailrelay login:password
    
  • İçine dönüştürme karma-formatında

postmap /etc/postfix/smtp_auth

Sadece köklerin bunu okuyabilmesi gerektiğini söylememe gerek yok ... chmod u=r,og=-


9

mailx CLI'de smtp sunucusunu ayarlamayı destekler ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v foo@baa.com

Smtp sunucunuzun kimliği doğrulanmamış posta göndermenize izin vermesi koşuluyla hiçbir şeyin yüklenmesi gerekmez.

Linux kutunuzda olabilecek tüm yazılım parçaları için smtp sunucusunu ayarlayan tek bir cevap yok . Her e-posta istemcisi bir SMTP sunucusunu yapılandırabilir.


Alıcınızın -S var=val önüne koyduğunuzdan emin olun .
Benoit Duffez

Kimliği doğrulanmamış postalara izin verilmiyorsa ne yapmalı? Müşteri, MAIL sırasında isimsiz bir posta göndermek için onaylanmadı,
Mian Asbat Ahmad,


7

En sevdiğim e-posta ( github ) istemcisi. Gerçekten basit, karmaşık bir konfigürasyona gerek yok, bağımlılığa gerek yok. Ve smtp-server argümanını komut satırı üzerinden belirleyebilirsiniz, bu komut dosyası için daha uygun olduğu anlamına gelir. Tek yazık, çoğu linux dağıtımının bu aracı içermemesidir, bu nedenle kendiniz derlemeniz gerekir.

Github'deki e-posta projetinden alıntılar

S: 'E-posta' nedir?

C: 'e-posta', komut satırı üzerinden uzak smtp sunucularına e-posta gönderecek veya 'sendmail'i dahili olarak kullanacak ve e-postalarınızı şifrelemek ve imzalamak için GNUPG ile tam etkileşime girecek şekilde tasarladığım bir program. .. GNUPG’yı http://www.gnupg.org adresinde bulabilirsiniz.

Bu yararlı e-posta istemcisini bilmeme izin verdiği için cygwin'e teşekkür ederiz .

Derle ve yükle

./configure
make
./install.sh --version 3.1.3 --prefix /usr --mandir /usr/share/man --sysconfdir /etc

E-postanın komut satırı seçenekleri

$ email --help
Options information is as follows
email [options] recipient1,recipient2,...

    -h, -help module          Print this message or specify one of the below options
    -V, -verbose              Display mailing progress.
    -f, -from-addr            Senders mail address
    -n, -from-name            Senders name
    -b, -blank-mail           Allows you to send a blank email
    -e, -encrypt              Encrypt the e-mail for first recipient before sending
    -s, -subject subject      Subject of message
    -r, -smtp-server server   Specify a temporary SMTP server for sending
    -p, -smtp-port port       Specify the SMTP port to connect to
    -a, -attach file          Attach file and base64 encode
    -c, -conf-file file       Path to non-default configuration file
    -t, -check-config         Simply parse the email.conf file for errors
    -x, -timeout              Set socket timeout.
        -cc email,email,...   Copy recipients
        -bcc email,email,...  Blind Copy recipients
        -sign                 Sign the email with GPG
        -html                 Send message in HTML format ( Make your own HTML! )
        -tls                  Use TLS/SSL
    -m, -smtp-auth type       Set the SMTP AUTH type (plain or login)
    -u, -smtp-user username   Specify your username for SMTP AUTH
    -i, -smtp-pass password   Specify your password for SMTP AUTH
    -g, -gpg-pass             Specify your password for GPG
    -H, -header string        Add header (can be used multiple times)
        -high-priority        Send the email with high priority
        -no-encoding          Don't use UTF-8 encoding

Örnek kullanım

SMTP sunucusu ile basit posta belirtildi

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr liuyan@domain.com -smtp-server smtp.domain.com -smtp-port 25 cwd@your-domain.com your-friends@his-domain.com

HTML postası

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" cwd@your-domain.com

Eklenti (ler)

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach cwd@your-domain.com

2

Bu sayfadaki talimatları izleyerek yerel bir exim SMTP sunucusu kurun , ancak Exim yapılandırmasının ilk ekranından "smarthost tarafından gönderilen posta; yerel posta yok" seçeneğini seçin . Bu, kutunuzda "mail" veya "mailx" komutlarından posta alabilen bir SMTP sunucusu kuracak ve tüm mesajları teslimat için smarthost'a (sizin durumunuzdaki bir Gmail sunucusu) iletecektir.

Gmail sunucusu aracılığıyla giden e-posta göndermek için , önemsiz olmayan Exim için TLS desteği ayarlamanız gerekir . Bu Howto bazı açıklamalar verir ve işte Gmail’e özgü daha fazla açıklama içeren bir link. Bu işe yaraması için kendinize birkaç saat izin vermelisiniz. Bir Gmail sunucusunu göndermeye çalışmadan önce, Exim TLS yapılandırmanızı her iki taraftan da hata ayıklayabilmeniz için, kutunuzdan kök erişiminizin olduğu bir TLS özellikli SMTP sunucusuna e-posta göndererek başlamanızı öneririm. İletişim şifreli olduğundan, hatta protokolü analiz etmek için tcpdump gibi araçları kullanamazsınız.


1

Ana sunucunuzla harici smtp sunucusu bağlantınız varsa, ana makinenizde smtp'yi yapılandırabilir ve e-posta gönderebilirsiniz.

Linux adımlarında smtp yapılandırmasını burada bulabilirsiniz: http://kerneltalks.com/config/guide-smtp-configuration-linux/

E-posta komutu örnekleri burada bulunabilir: http://kerneltalks.com/commands/examples-send-email-through-terminal/


Cevaplar kendi başlarına durmaya yetecek kadar ayrıntı içermelidir. Daha kapsamlı bilgilerle bağlantılı olmakla ince, ama bağlantı çürüklüğü battıktan sonra yararlı olabilir, böylece bağlantılı malzemenin en azından bir kısmının cevabı alıntı edilmelidir.
user4556274
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.