Ubuntu 11.04, LAMP adlı görevi görevini kullanarak yükledim.
PHP'nin mail()
işe yaramadığını öğrendim .
Sanırım etkinleştirmem gerekiyor mu yoksa? Bunu nasıl yaparım?
Ubuntu 11.04, LAMP adlı görevi görevini kullanarak yükledim.
PHP'nin mail()
işe yaramadığını öğrendim .
Sanırım etkinleştirmem gerekiyor mu yoksa? Bunu nasıl yaparım?
Yanıtlar:
Php'nin posta kılavuzundan:
Gereksinimler
Posta işlevlerinin kullanılabilir olması için PHP, yüklü ve çalışan bir e-posta sistemi gerektirir. Kullanılacak program php.ini dosyasındaki yapılandırma ayarları ile tanımlanır.
Bu, bir çeşit posta sunucusu kurmanız ve onu kullanmak için php yapılandırmanız gerektiği anlamına gelir. Genellikle bu posta sunucusu Ubuntu'da bir postfix'dir. Bununla birlikte - kodladığınız php tarafı sonunda bir barındırma servisinin tarafında saklanacaksa (örneğin, xmission), bir posta sunucusu büyük olasılıkla oraya zaten kurulmuş olacaktır. Bu durumda sitenizi yerel olarak değil, çevrimiçi olarak test edin.
Bunu kendi sisteminizde test etmeniz veya devam etmek yerine kendi ev sunucunuzda barındırmak istediğinizde:
Kurulum: postfix / sudo apt-get install postfix
İşlem sırasında size postfix'in hangi modda yüklenmesini istediğinizi soracaksınız. Dört olası mod vardır:
Yükleme seçeneklerinin geri kalanı, bu genel yapılandırma seçiminize bağlıdır.
Büyük olasılıkla bir uydu kurulumu seçeceksiniz. Bu, postaların harici bir sağlayıcı kullanılarak gönderileceği anlamına gelir. Smtp sunucusu olarak (giden posta sunucusu), sağlayıcılarınızı smtp olarak belirtmeniz gerekir. Seçeneklerin geri kalanı açıklayıcıdır.
Çoğu smtp sunucusu posta göndermek için parola doğrulaması gerektirir. Yani postfix bu şifreyi bilmeniz gerekecek. Ayrıca, dikkate alınması gereken şifreleme gibi şeyler de var (ki bu google’ın kullanılması gerekecek). Parola doğrulamayı (sasl) kullanarak postfix'i şu şekilde yapılandırabilirsiniz:
Software Center simgeleri ile veya kullanarak terminali kullanarak libsasl2-module ve sasl2- bin'i kurun :
sudo apt-get install libsasl2-2 libsasl2-modules sasl2-bin
Bu satırları ekleyerek sasl-auth komutunu etkinleştirin. /etc/postfix/main.cf
# add to /etc/postfix/main.cf
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noplaintext noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
Şunun /etc/postfix/sasl_password
gibi bir satırda bir dosya oluşturun :
smtp.gmail.com USERNAME@gmail.com:USERPASSWORD
Gerçek şifreyi, kullanıcı adını ve smtp adresini değiştirin.
Güncelleme posta eki:
sudo chmod 600 /etc/postfix/sasl_password # for safety of your smtp password
sudo postmap hash:/etc/postfix/sasl_password
sudo postmap /etc/postfix/sender_canonical
sudo /etc/init.d/postfix restart
Sen aşmak gerekebilir 'inkar izni' hata ile chown postfix:postfix /etc/postfix
önceden.
Bu çoğu durumda yapmalı. Ancak bazı smtp sağlayıcıları gönderen veya şifreleme olarak belirli bir adrese ihtiyaç duyar.
İlgili: PEAR :: Mail arayüzü de ilginizi çekebilir.
Gmail (ve belki de diğer hizmetler), bu şekilde posta göndermeye çalıştığınızdan, standartlarına göre güvensiz sayılabileceğinden hoşunuza gitmeyebilir ve girişimi engeller; Kimlik doğrulama Ayrıca POP3'ünüz de etkinleştirilmelidir.
Burada görmek için karşı. (Güvenli tarafta olmak istiyorsanız, sahte bir Gmail hesabı oluşturun)
Daha önce belirtildiği gibi, ev bilgisayarınızda uygulamalar geliştirirken sadece php'den e-posta göndermeniz gerekiyorsa, postfix overkill olacaktır.
Şahsen çok basit ve hafif bir paket ssmtp kullanıyorum. Giden e-postaları göndermek için herhangi bir smtp sunucusunu kullanacaktır. Çalıştırarak yükleyin:
sudo apt-get install ssmtp
Ardından /etc/ssmtp/ssmtp.conf
dosyayı düzenleyin , mevcut mailhub satırına yorum yapın ve aşağıdaki satırları ekleyin (bu örnek gmail smtp sunucusu içindir):
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=<YOUR-EMAIL>@gmail.com
AuthPass=<YOUR-PASSWORD>
(Gmail kullanıcı adınızı ve şifrenizi girin. Elbette herhangi bir SMTP sunucusunu kullanabilirsiniz).
Şimdi php.ini dosyanızın doğru olduğundan emin olun sendmail_path
. Olarak okumalısınız:
sendmail_path = /usr/sbin/sendmail -t
( @ Dima-l ve @ omar-sabic yorumlarından : ssmtp
Burada belirtmeniz gerekmez, çünkü kurulum için /usr/sbin/sendmail
doğru şekilde işaret eden bir sembolik bağlantı oluşturmalıydı ssmtp
. Aksi takdirde belirtmeniz gerekir sendmail_path = /usr/sbin/ssmtp -t
)
Apache'yi yeniden yüklerseniz, php'niz şimdi giden e-postaları gönderebilmelidir.
sendmail_path = /usr/sbin/ssmtp -t
. Bu çalıştı, teşekkürler
/usr/sbin/sendmail
, doğru bir şekilde ssmtp'ye işaret eden bir sembolik bağlantı oluşturmalıdır . Yani, kullanma sendmail_path = /usr/sbin/sendmail -t
da çalışması gerekir
ssmtp
(bazı yararlı notlar bulabilirsiniz): Debian'da PHP postası kurma - bu soru + bu bağlantı programı kurmaya yardımcı oldu.
FromLineOverride=YES
Aşağıdaki hatayı önlemek için:550 5.7.60 SMTP; Client does not have permissions to send as this sender
PHP, posta göndermek için bir SMTP istemcisi gerektirir. Bu işlevi yerine getirmek için Postfix gibi bir tam özellikli posta aktarma aracısı (MTA) yükleyebilirsiniz , ancak yalnızca PHP üzerinden posta göndermeniz gerekiyorsa, bu aşırıya kaçar. Bunun yerine, msmtp'yi yükleyin . Yapılandırmak için hafif ve çok basit.
Msmtp'yi yükle
sudo apt-get install msmtp-mta ca-certificates
Yapılandır
Yeni bir yapılandırma dosyası oluşturun:
sudo vi /etc/msmtprc
... aşağıdaki yapılandırma bilgileriyle:
# Set defaults.
defaults
# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# Set up a default account's settings.
account default
host <smtp.example.net>
port 587
auth on
user <username@example.net>
password <password>
from <address-to-receive-bounces@example.net>
syslog LOG_MAIL
"<" Ve ">" dahilindeki her şey tarafından temsil edilen yapılandırma verilerini değiştirmeniz gerekir (bunları da dahil edin). Ana bilgisayar / kullanıcı adı / şifre için, posta sağlayıcınızdan posta göndermek için normal bilgilerinizi kullanın.
PHP'ye kullanmasını söyle
sudo vi /etc/php5/apache2/php.ini
Bu tek satırı ekle:
sendmail_path = /usr/bin/msmtp -t
cat <<EOF | msmtp <receiver@test.com> Subject: test This is a test! EOF
Basit bir düzeltme olmalı. Sadece asıl e-postayı yapan Postfix'i kurmanız gerekir.
sudo apt-get install postfix
Bunu bir terminalden (yazılım merkezinden değil) çalıştırmak istiyorsunuz, çünkü size birkaç kurulum sorusu sorması gerekiyor. Tüm varsayılanları (yalnızca yerel, vb.) Kabul etmek için bulunmanız gerekir.
Bu eski bir soru ve yukarıda cevabım çok değerli cevaplar var, fakat çevrem exim
için gerekli olan şeyler vardı . Ayrıca, ilk önce sendmail'in yüklü olduğunu onaylayın ( $ which sendmail
- / usr / sbin / sendmail gibi bir şey döndürmelidir). Linode.com'da iyi bir rehber buldum , ama esas şey:
apt-get install exim4-daemon-light mailutils
bunu takiben:
dpkg-reconfigure exim4-config
sizi etkileşimli bir editöre ulaştırır.
Harika cevap , con-f-use.
"Sahte gmail hesabı" hakkında ekleyeceğim bir şey var:
Bu, şiddetle tavsiye edilir, çünkü gmail hesabınızı daha az güvenli uygulamalara izin verecek şekilde yapılandırmanız gerekir: https://www.google.com/settings/u/0/security/lesssecureapps
Aksi takdirde "lütfen web tarayıcınızı kullanarak giriş yapın ve sonra tekrar deneyin " /var/log/mail.log
dosyanızda hata .
Ayrıca, gmail smtp sunucusuna kök sertifikamı göndermezsem, zaman aşımı hatası alıyorum. Bunu yapmak için:
sudo nano /etc/postfix/main.cf
aşağıdakileri dosyanın altına ekleyin
smtp_tls_CAfile = /etc/postfix/cacert.pem
Sonra çözülme kök sertifikasını cacert.pem
dosyaya kopyalayın :
cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem
İşte kullandığım bağlantı: Postfix'i Ubuntu'da Gmail SMTP Kullanacak Şekilde Yapılandırma | EasyEngine
Umarım bu birkaç kişiyi saç köklerinden kurtarır ...
Dima L.'nin sağladığı çözümleri , sisteme en kolay ve en hafif yöntem olarak buldum .
Ayar konusunda daha fazla netlik için sadece bazı ekler. Yorum yapmak gerektiğini hostname
de /etc/ssmtp/ssmtp.conf
dosyaya. Örnek ssmtp.conf
dosya aşağıdaki gibidir:
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.yourdomain.com
UseSTARTTLS=YES
AuthUser=mail@yourdomain.com
AuthPass=YOUREMAILPASSWORD
# Where will the mail seem to come from?
#rewriteDomain=
# The full hostname
#hostname=
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES