WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Skicka mail från PHP? (https://www.wn.se/forum/showthread.php?t=1041315)

ajsie 2010-04-05 06:56

Skicka mail från PHP?
 
Har en VPS från Glesys som jag kopplat en IP till. Hos Binero har jag pekat domänen till VPS:ens IP.

Så när jag t.ex. skriver min-domän.se så kommer den till VPS:en.

Har läst om hur man sätter upp en mail server på Ubuntu, men är inte säker på att det är det jag vill.

Kan man inte låta någon annan ha hand om mailen (Binero? Gmail?) så jag bara skickar mailen via deras SMTP server?

qson 2010-04-05 11:39

En domän har flera pekare så man kan styra några olika saker till olika servrar. Det finns något som heter MX-pekare (Mail Exchanger), och den IP som står som MX blir den server som hanterar all e-post för den domänen. Förutsättningen är ju att servern klarar av att hantera just den domänen.
Om du vill använda binero för mail måste du först ställa in så den accepterar domänen och lägga upp e-postkonton, sedan peka MX-värdet för domänen till bineros server.
Ett annat alternativ är GMail, där man kan ställa in att den skall hantera externa maildomäner. Då ställer man in vilken domän som GMail skall hantera och sedan pekar MX-värdet mot GMail.

Om du vill skicka mail från PHP är det en helt annan sak. Då måste sendmail (eller kanske går med annan smtp-server också) vara installerad lokalt (/usr/sbin/sendmail?) och använda PHP:s mail()-fnktion.
Det går också att använda en klass som t.ex. PHPMailer och använda en extern SMTP-server.

ajsie 2010-04-05 19:23

Tack för beskrivningen. Gmail app, låter bra det! Finns det någon hake eller limit med detta om man kommer upp i epostvolym?

Det jag inte riktigt har fått kläm på än är PHP biten för att skicka mail.

1. Jag kan sätta upp en lokal smtp server (postfix) och den kan skicka till vilka domäner som helst?

2. Det är en direkt anslutning mellan min lokala smtp server och gmails smtp server (om vi antar att jag skickar till johan@gmail.com) och INTE involverar andra smtp servrar på vägen?

3. Om min ISP har spärrat port 25, innebär inte det att trafiken utåt från min lokala smtp server inte kommer att fungera? Men om de har spärrat port 25, hur kan jag då använda deras smtp server?

4. Folk säger man kan använda sig av externa smtp servrar (och vi antar att min ISP inte har spärrat porten), VILKA kan man använda och VARFÖR tillåter andra SMTP servrar att man "utnyttjar" dom för att skicka mail?

5. Kan man ställa in backup smtp servrar, så ifall den enda inte fungerar, så skickas det via den andra?

6. Förstår inte varför PHP inte kan skicka till gmails smtp server direkt utan måste först gå till en smtp server som sedan kommunicerar med en annan smtp server. Man kunde ju lika bra skickat datan direkt till den senare?

Skulle varit tacksamt om du kunde rätat ut dessa frågetecken så man har lite koll på det.

vco-systems 2010-04-05 21:42

Det finns en nackdel om du använder gmail för kontaktformulär, och det är att gmail inte bryr sig om reply-to adress om du skickar mailen till dig själv. Eg. skickar mailen från kontakt@doman.se till kontakt@doman.se med reply-to: kund@kund.se så kommer gmail att vilja svara till kontakt@doman.se

qson 2010-04-05 21:56

Har svårt att sätta siffror på delar av mitt svar, men håll till godo! :)

Jag har själv aldrig satt upp en SMTP-server, men det skall bara vara att "sätta upp" den så kan du skicka mail.
Att skicka e-post via SMTP fungerar som när du lägger ett vanligt brev på lådan:
Posten hämtar brev från alla brevlådor och skickar dem till postsorteringscentralen (motsv. SMTP-servern). Där grovsorteras breven och skickas vidare till en annan sorteringscentral (närmare mottagaren) där breven sorteras igen och skickas till mottagarens lokala postkontor (också en SMTP-server) där brevet sedan sorteras till rätt brevlåda. Här håller de också koll på om brevet skall eftersändas/vidarebefordras och då skickas det till ytterligare ett annat postkontor (ännu en ny SMTP-server).
Du kan skicka vanlig post till vilken adress du vill, oavsett postort.
Du kan skicka e-post till vilken e-postadress du vill, oavsett domän.
Dock finns det ofta begränsningar i SMTP-servrarna. Webbhotell tillåter t.ex. bara att du sänder e-post FRÅN din egen domän, eller en domän som tillhör webbhotellet.
Detta gäller nog iofs alla SMTP-servrar som bara tillåter avsändare som har e-postkonto på den servern.
Ofta har webbhotellen endast tillåtit SMTP från localhost. Internetleverantörer begränsar ofta så bara deras egna uppkopplingar tillåts ansluta till SMTP-servern.
De flesta som tillhandahåller e-postkonton (POP/IMAP) har ofta också en SMTP-server som man kan använda. Denna kräver då inloggning (ofta samma som inloggning till POP/IMAP) för att kunna ansluta.
Eftersom de flesta internetleverantörer blockerar port 25 har många SMTP-servrar konfigurerats för att köra på andra portar, t.ex. 26 eller 2525. Detta är bara att göra inställning i mailklienten/PHP-klassen.

Om du vill slippa sätta upp en egen SMTP-server, så kan du ju som sagt använda en extern. T.ex. GMail:s SMTP-server direkt. Men de kräver förmodligen inloggning med ett GMail-konto.

Citat:

4. Folk säger man kan använda sig av externa smtp servrar (och vi antar att min ISP inte har spärrat porten), VILKA kan man använda och VARFÖR tillåter andra SMTP servrar att man "utnyttjar" dom för att skicka mail?
Därför att folk som har e-postkonton hos dem måste kunna skicka mail.
Alternativt om vi pratar t.ex. telias SMTP så vill de att deras kunder skall kunna skicka mail. De har en på port 25 som man kan ansluta till men utanför det är port 25 spärrat.

Citat:

5. Kan man ställa in backup smtp servrar, så ifall den enda inte fungerar, så skickas det via den andra?
Nja, du måste ange en smtp-server att ansluta till. Om du installerar en lokalt så är den ju alltid igång och då är det inget problem.
Om man använder externa smtp-servrar så kan man ju bygga in i skriptet så att om det blir timeout på den första så provar den med en annan. Det beror sig helt på hur du bygger ditt PHP-skript. Normalt behöver man aldrig tänka på detta. Servrarna har ofta så bra upptid att det aldrig blir aktuellt.

Citat:

6. Förstår inte varför PHP inte kan skicka till gmails smtp server direkt utan måste först gå till en smtp server som sedan kommunicerar med en annan smtp server. Man kunde ju lika bra skickat datan direkt till den senare?
Då måste du veta exakt vilken SMTP-server som hanterar just den e-postadressen du skickar till. Om man använder t.ex. PHPMailer-klassen kan du ju fylla i gmails smtp-server och inloggingen till ditt gmail-konto så skickas ju mailen via gmails smtp-server.
Varför SMTP-servrarna kommunicerar och skickar mellan varandra skrev jag i början av detta inlägg (det där med postcentralerna).

Hoppas det hjälper lite på traven.


Alla tider är GMT +2. Klockan är nu 10:10.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson