CentOS sunucumla e-posta nasıl gönderilir?


21

CentOS 5.5 kullanarak mütevazı bir ev sunucusu yaptım. Sunucunun, cron işleri gibi çeşitli şeyler için Gmail hesabıma veya diğer e-posta hesaplarıma e-posta göndermesini istiyorum. Ayrıca sunucuda da çalıştığım / geliştirdiğim PHP uygulamaları üzerinden e-posta gönderebilmek güzel olurdu. Veya sunucunun mail komutu ile e-posta göndermesi bile mümkün.

Linux sunucunuzu bir e-posta sunucusu olarak ayarlamak veya sendmail'i yapılandırmakla ilgili milyonlarca Google arama sonucu olduğunu biliyorum. E-postaları göndermek ya da bunun gibi karmaşık bir şey göndermek için diğer istemcilerin bağlanabileceği bir şirket sunucusu kurmaya çalışmıyorum.

Sunucumun bana bazı şeyler hakkında e-posta göndermesini istiyorum. Basit olmalı gibi görünüyor ... Biri beni doğru yöne işaret edebilir mi?

GÜNCELLEŞTİRME

Aşağıdaki kullanıcıların isteğine göre bu komutu denedim:

/bin/mail -s "My Subject" "myaddress@gmail.com" < /home/john/test

Hata falan yok Ancak e-posta hiçbir zaman gelen kutuma gelmedi. İşte benimmaillog

Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: from=root, size=10906, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, relay=root@localhost
Oct 27 00:52:19 localhost sendmail[13703]: o9R6qJOd013703: from=<root@localhost.localdomain>, size=11209, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: to=myaddress@gmail.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=40906, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o9R6qJOd013703 Message accepted for delivery)

Herhangi bir ipucu var mı?


1
Denedin mi? Ne tür problemler görüyorsunuz?
Ignacio Vazquez-Abrams

Ne aradığımdan emin değilim. Google’da arama yapıyorum ve bir Linux Posta Sunucusu kurmak için dersler görüyorum. İstediğim bu mu?
Jake Wilson,

Sadece bunun hala cevaplanmadığını fark ettim. Meraktan, anladın mı? Makinenin PBL'de listelenip listelenmediğini kontrol ettiniz mi? spamhaus.org/pbl
Belmin Fernandez

İşe yaramadım. Sendmail yükleme işleminden henüz geçmedim, çünkü aşağıdaki posterler tek bir e-posta göndermenin gerekli olmamasını gerektiriyor. Küçük ev sunucumun daha önce hiç e-posta göndermediğim için spam listesinde olduğunu hayal edemiyorum.
Jake Wilson

Yukarıda listelenen basit komutu , aynı sonuç ve aynı günlük iletisiyle 10minutemail.com e-posta hesabına göndermeyi bile denedim
Jake Wilson

Yanıtlar:


13

/bin/mail -s "Enter Subject Line here" -a /home/.../whateverFileYouWantAttached "you@YourEmailAddress" < /home/me/textBody.letter

Yukarıdaki komutu deneyin :)


1
+1 Posta göndermek için sistemde bir posta sunucusuna ihtiyacınız yok, tıpkı masaüstünüzde posta göndermek için bir posta sunucusuna ihtiyacınız olmadığı gibi. Posta programı gayet iyi.
dunxd

1
Bu komutu denedim ama işe yaramadı. Hata falan yok Gmail gelen kutumda hiçbir posta görünmüyor. Benim posta günlüğümün söylediğine bak
Jake Wilson

Yani ... bunun benim için çalışmamasının bir nedeni var mı? Neden posta alamadığımı belirlemek için hangi günlüğe bakmalıyım?
Jake Wilson

6

Basit cevap:

Sendmail'i ayarla . Dağıtımınıza bağlı olacaktır, ancak bu hiç de zor değil. Belirli bir sorunuz varsa, isteyin.

Karmaşık cevap:

Bunu soruyorsanız, muhtemelen sadece silaha atmamalısınız ve sendmail justtt henüz kurmamalısınız .

Birkaç şeyi göz önünde bulundurmanız gerekir:

  1. ISS'niz e-posta göndermenize izin veriyor mu? Sunucu olmayan IP aralığınız olabilir ve bu nedenle birçok e-posta sağlayıcısı düpedüz engeller.

  2. Adresinden hangi adresi kullanacaksın? Bu adresten (SPF, DomainKeys, vb.) Göndermeye yetkili misiniz? Aksi takdirde, mesajlarınız e-posta sağlayıcıları tarafından spam olarak algılanabilir --- ve haklı olarak.

  3. Son fakat en az kesinlikle değil: Gerçekten kendi SMTP servisinizi kullanmanız mı gerekiyor? ISS'nizi kullanmanızın neden yeterince iyi olmadığı herhangi bir sebep var mı?

Bir SMTP sunucusu kurmak çok eski zamanlardı. Günümüzde, kurulum daha kolay olabilir ama aslında insanların posta kutularına mesajlar alabilmesi için ayarlanması zor bir iştir.


3

Yukarıdaki önerilerden hiçbirinin evde de CentOS sistemimde çalışmadığını doğrulayabilirim - tek bir tane değil. Hangi can sıkıcı!

Sonra aynı şeyi CentOS 6.4 çalıştıran yeni bir Amazon örneğinde denedim, hatta varsayılan yapılandırmada bile sorunsuz posta gönderebiliyorum. Tek yapmam gereken şeydi

yum install mailx

Bundan sonra yukarıda açıklandığı gibi posta gönderme bir cazibe gibi çalışır. Sendmail gibi komplikasyonların kurulması Jakub'un ne yapmaya çalıştığı için gerekli DEĞİLDİR.

ISP'mde bazı konfigürasyonlar olmalı, çünkü burada sonda konfigüre edilebilir bir güvenlik duvarı yok.


2

Aşağıdakileri yapmanız gerekir:

  1. sudo yum install postfix telnet mailx
  2. sudo /etc/init.d/postfix start
  3. sudo vi /etc/postfix/main.cf
  4. Değişiklik mydestination = mydomain.com, localhost.mydomain.com, localhost

    için

    mydestination = localhost.mydomain.com, localhost

Komut satırından aşağıdakini kullanarak test edin

  1. mail address@example.com Konu:
  2. Demoslice.com adresinden gelen test e-postası
  3. e-postanın gövdesi.
  4. .

No 4 - e-postanın gövdesini tamamlamak için tam bir durak var. Şimdi postanız olmalı.

Yukarıdakiler çalışan bir MTA (Mail Transfer Agent) alacaktır. Size daha gelişmiş bir kurulumda yardımcı olacak bazı kaynaklar, slicehost'in CentOS için e-posta kurulumu hakkındaki makalelerinde bulunabilir (CentOS ve E-posta bölümüne gidin). Gerçekten aşağıdakileri doğru ayarlamayı düşünmelisiniz: hostname, RDNS (DNS'yi Ters Çevir) ve SPF (Gönderen Politikası Çerçevesi) DNS sağlayıcınıza kaydeder.


Bu mükemmel bir cevap - kısa ve işe yarıyor.
monkjack

1

/Tc/mail.rc adresini smtp adresini ayarlamak için değiştirdiniz mi?


1
İçeriği /etc/mail.rcolan set ask askcc append dot save crt ignore Received Message-Id Resent-Message-Id Status Mail-From Return-Path Viayapmamı öneriyorsunuz sen?
Jake Wilson

0

Postfix'i kurmayı deneyin ve konfigürasyon dosyasındaki yönlendirmeyi sendmail ile çalışsa bile ayarlayın.


0

Postfix doğru yolda, ancak gmail en azından uzaktan okunaklı olduğunuzu düşünmediği sürece (örn. Spam değilsiniz), postanızın teslim alınmasının olasılığı düşüktür.

İşlem burada postalamakla ilgili bir parça olmakla birlikte, bunu elde etmenin en basit yolu (ve postanızın teslim edilmesini sağlamak), posta kodunu bir aktarım olarak kullanarak kendi gmail hesabınızı kullanmaktır.

Kullandığım işlem burada ayrıntılı olarak verilmiştir:

http://rs20.mine.nu/w/2011/07/gmail-as-relay-host-in-postfix/

Kendinden imzalı sertifikaların kurulmasına gerek yoktur (sendmail'e göre) ve benim deneyimime göre, işe yarıyor!


0

Kolay çözüm sendmail değil, sendEmail'dir:

http://caspian.dotconf.net/menu/Software/SendEmail/#download

Alabileceğiniz herhangi bir SMTP sunucusu ile kolayca göndermek üzere yapılandırılmış bir perl betiği - her zaman Gmail hesapları aracılığıyla göndermek için kullanırım, ancak aynı zamanda 25 numaralı bağlantı noktasındaki TCP üzerinden sıradan SMTP için de çalışır.

SendEmail perl betiğini genellikle Gmail için kendi kabuk betiğimle sararım:

#!/bin/bash

# Send gmail through an account specified in ~/.sendGmailAuthFile (or file identified with -k.)
# The auth file must have values for the -f (from@domain) and -xp (password) options of sendEmail,
# structured as:
#
#    user=me.surnamen@gmail.com
#    pwd=xxxxxxx
#
# We will fill in the rest, and other params are passed through to sendEmail
#
# Example: sendGmail -u "My subject line" -t "test@whatever.com" < message.txt

function sendGmailImmed {
        local authFile="$HOME/.sendGmailAuthFile"
        for arg in "$@"; do
                if [[ "$arg" == "-k" ]]; then
                        shift
                        authFile="$1"
                        shift
                fi
        done
        initAuthFile $authFile
        source $authFile

        sendEmail -f $user -xu $user -xp $pwd -s smtp.gmail.com:587 -o tls=yes "$@"
}

function initAuthFile {
        # If the authfile doesn't exist, we'll create a dummy:
        if [[ ! -f $1 ]]; then
                echo "# sendGmail authentication file: " > $1
                echo "user=my.name@gmail.com" >> $1
                echo "pwd=my-password" >> $1
                echo "A shell auth file has been created as $1"
        fi
}

if [[ -z $sourceMe ]]; then
        sendGmailImmed "$@"
fi
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.