[Megoldva] php email küldés, gmail azt írja "x domainen keresztül"

Sziasztok!

Próbálom már egy ideje beállítani a debian szerverem.

A problémám, hogy van több domain, mint pl:
domain1.com
domain2.com
domain3.com
...

Mindegyik "A" rekordja a szerverre mutat, az MX recordjuk pedig mail.domain1.com, mail.domain2.com, mail.domain3.com.
És mindegyikhez fel van véve a "mail" "A" rekordnak.

A szerver a bejövő leveleket csak továbbítja nem tárolja, ez jól működik.

Viszont amikor küldene a szerver levelet mondjuk php-val akkor a gmail spamnek jelöl mert, a levél a "domain1.com" on keresztül érkezik.

A main.cf tartalma:


smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

myhostname = domain1.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $myhostname
mydestination = $myhostname, /etc/postfix/virtual/domains
virtual_maps = hash:/etc/postfix/virtual/addresses

relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4

a /etc/postfix/virtual/addresses tartalma

domain1.com DOMAIN
@domain1.com user1@gmail.com

domain2.com DOMAIN
@domain2.com user2@gmail.com

domain3.com DOMAIN
@domain3.com user3@gmail.com

Lehetséges, hogy a postfix beállítással nincs probléma, és a domain2.com valamint a domain3.com MX rekordját kellene mail.domain1.com ra állítani?

Valamint, a postfix ilyen beállítások mellet, milyen portokat kellene megnyitnom?

Illetve a portokról még kérdezném, hogy proftpd passiv modban port range-et használ, viszont azt nem tartom túl biztonságosnak megnyitni.

Köszönöm,
Péter

Hozzászólások

Mi folyik itt Gyöngyösön mostanában?

Az elmúlt pár hétben több "fogalmatlanul tákolom a levelezést és nemmegy" jellegű fórumtéma került elém a hup-on, mint máskor egy év alatt. Bár a többieknek általában sikerülni szokott legalább vagy a fórumtémát vagy a subject-et eltalálni, itt egyik se stimmel...

Miért által neki nulláról reszelni? Volt komoly oka?

Joomla sablon, sokat kér, és a szerver eléggé leterhelt. Ez van. Ha nincs időd, ne nézegesd ;)

Szerk:
Amúgy meg, ha szakmai kifogásod van, azt tedd fel bátran, meghallgatlak. De az, hogy valami "lassú", hát kérem...
Ellenben tudok küldeni sok-sok domainnel levelet, és PHP-ból is. És ha problémám van, körül tudom határolni, és meg tudom érthetően fogalmazni.
--
PtY - www.onlinedemo.hu

Igen az, hogy Joomla az egyértelmű:

meta name="generator" content="Joomla! - Open Source Content Management"

Én nem szaroztam, Te mondtad: "Akinek ráspoly van a kezében ... :)"
Erre mondtam Én, hogy Te is ráspolyt használsz csak más területen.

És nem csak azt mondtam, hogy "lassú", hanem, hogy a html kód is csiszolásra szorul.

És igen, mint ahogy már mondtam, én nem értek a szerver beállításhoz, ezért írtam ide,
és hát ha nem tudod/akarod értelmezni a problémámat akkor "ne nézegesd ;)".

Annak meg örülök, hogy Te tudsz levelet küldeni : "Ellenben tudok küldeni sok-sok domainnel levelet, és PHP-ból is. És ha problémám van, körül tudom határolni, és meg tudom érthetően fogalmazni."

De megnezted mar, hogy a gmail miert nezi spamnek? Esetleg a header-be beletett-e valami utalast erre vonatkozolag?
Normalis fix ip cimed van, annak a reverse = domain1.com = /etc/mailname tartalma?

A probléma, hogy amikor a php küld levelet mondjuk a domain3.com-ról akkor ez van a headerben:

Received: from domain1.com (domain1.com. [xxx.xxx.xxx.xxx])

Tehát mindig a domain1.com van a "Received: from"-nál, nem pedig a domain3.com, vagyis az a domain amelyikről küldeném.

Mindegyik domainról szeretnék küldeni levelet, domain1.com, domain2.com és a domain3.com ról is, illetve később még több domainról.

Teljesen nem értem sajnos a kérdést :(
Ha a reverse a reverse DNS lookup-ra vonatkozik akkor:

host:

$ host xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx.in-addr.arpa domain name pointer domain1.com.

dig:

$ dig xxx.xxx.xxx.xxx

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> xxx.xxx.xxx.xxx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 39060
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;xxx.xxx.xxx.xxx. IN A

;; AUTHORITY SECTION:
. 1799 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2014022301 1800 900 604800 86400

;; Query time: 255 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
;; WHEN: Sun Feb 23 19:15:26 2014
;; MSG SIZE rcvd: 107

nslookup:

$ nslookup xxx.xxx.xxx.xxx
Server: 8.8.4.4
Address: 8.8.4.4#53

Non-authoritative answer:
xxx.xxx.xxx.xxx.in-addr.arpa name = domain1.com.

Authoritative answers can be found from:

Normális fix ip címem van, és a /etc/mailname = domain1.com-al.
Valamint minden domain az én ipmre mutat, és a szerver host neve is a domain1.com.

Köszönöm a válaszokat.

Megnéztem, és csak az egyik domain ról érkező leveleket jelöli spamnak a gmail, ennek majd utána járok.

Viszont amint nem értek, hogy miért írja a gmail, hogy:
"info@domain3.com a(z) domain1.com domainen keresztül"

Amikor szolgáltatónál bérlek tárhelyet, akkor nem írja a gmail, hogy "x domainen keresztül"

Illetve a proftpd -nél a passiv modhoz meg kell nyitnom az egész port rang-et?

Na jó, akkor kezdjük az elejéről!

1.) "Viszont amikor küldene a szerver levelet mondjuk php-val akkor a gmail spamnek jelöl mert, a levél a "domain1.com" on keresztül érkezik."
Skuzzy már feltette a kérdést ("De megnezted mar, hogy a gmail miert nezi spamnek? Esetleg a header-be beletett-e valami utalast erre vonatkozolag?"), viszont nem érkezett rá válasz.

Tehát újra: honnan van az az információ, hogy a domain1.com-ról érkezés a Gmail problémája?

Légy szíves másold be egy, a Gmail-re megérkező, de a Spam mappában landoló levél fejlécét.

2.) Milyen feladóval (From:) küldöd ki a levelet? Rendesen összeállítod a fejlécet, vagy megfelelően beállítottad a PHP-t? Ez az 1.) pontban kért fejlécből látszani fog.

3.) Milyen módszerrel küldesz a PHP-ból? mail() vagy SMTP-n?

Az két külön dolog, hogy milyen domain feladóval küldöd a levelet, és hogy milyen nevű szerveren keresztül, küldöd. Nálad valszeg a domain1.com a szerver küldő neve is, csak nincs minden hozzá beállítva rendesen, tipikusan a reverse név. Egy szerver nem fog különböző néven levelet küldeni (max. több ip-reverse párossal, de ez nem fog érinteni)

Költői kérdés: egy IP-nek hány reverse rekordja lehet?
Ha esetleg több, hogy lehet azt elérni, hogy Béla mindig A-t, Gizi mindig B-t, Dezső meg mindig C-t lásson, ha épp kérdez?
Minden kérdés költői, elég, ha leülsz, és eltöprengsz rajta.

Kis segítség:
A reverse ellenőrzés úgy működik, hogy a fogadó MTA kap egy IP-t kapcsolódásként (az egyszerűség kedvéért legyen ez 1.1.1.1). Ennek ő megnézi a reverse rekordját, és ha nincs, akkor majd a spamfilter mond rá egy bazmeget. Ha viszont van (legyen az egysezrűség kedvéért ki.vagy.te a rekord), akkor megnézi, hogy tartozik-e ehhez A rekord. Ha nem, akkor erre is lesz valakinek egy keresetlen szava. Ha viszont van, akkor lekérdezi a hozzá tartozó IP címet. Ha 1.1.1.1-et kap, akkor örülünkvincent van, ha nem akkor meg ismét basz van.
Amint ezt elfogadod, és beállítod, hogy jó legyen, rögvest leszarja mindenki, hogy a küldő host éppen milyen domainről küld ki.
Kis segítség még: a google szerverei rengeteg kismiska.com domain leveleit kezelik, és egyik szerverüknek sem kismiska.com a reverse.

Remélem, tudtam segíteni, ha már leszaroztad az oldalamat, mert lassan jön be.
--
PtY - www.onlinedemo.hu

Amiért a gmail azt írja, hogy "x domainen keresztül" az azért van mert az envelope-from nincs beállítva.
Köszönet érte PtY-nek aki felhívta rá a figyelmem.

Ezt lehet állítani a php mail függvényben az 5. paraméterrel pl.:"-f akarmi kukac domain.com"

Ez viszont nem mindig megoldás, főként akkor nem ha nem saját php kód fut, nem lehet mindenkitől elvárni, hogy az envelope-from-ot töltse ki normálisan.

Ezért gondolom van arra megoldás, hogy a szerver ha nincs envelope-from akkor az envelope-from legyen egyenlő a feladóval.

Kerestem google-ben, hogy van e megoldás erre de nem találtam.

Jelenleg úgy oldottam meg, hogy mindegyik virtual host-nál beállítottam a sendmail_path-ba, pl.:"/usr/sbin/sendmail -t -i -f no-reply kukac domain3.com"

"Ezért gondolom van arra megoldás, hogy a szerver ha nincs envelope-from akkor az envelope-from legyen egyenlő a feladóval. Kerestem google-ben, hogy van e megoldás erre de nem találtam."
Igen, fentebb kérdeztem is, hogy a fejlécet rendesen összeállítod-e. Lásd a mail() negyedik paramétere, illetve "sendmail -t".