Autor Zpráva
Ondřej Ryška
Profil
Zdravím,
potřeboval bych zajistit aby nebyl Postfix nastaven jako relay. Tuším že to bude někde v souboru main.cf. Asi parametr mynetworks a možná relayhost. Do této konfigurace jsem nesahal takže je stejná jako po instalaci Postfixu. Část konfigurace z main.cf je následující:

myhostname = ll-test
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = ll-test, localhost.localdomain, , localhost
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Jak mám tedy nastavit ty parametry aby nebylo povoleno relay? Musím se přiznat, že o relay akorát vím, že nějak souvisí se zneužitím pro odesílání spamu a že ještě existuje nějaké open relay... nastavení Postfix jako ne-relay po mě požaduje správce serveru na kterém běží můj VS. Postfix potřebuji pouze pro odesílání mailu metodou mail() z php formuláře. K ničemu jinému jej nepotřebuji. Nebo je Postfix nastaven jako ne-relay už implicitně po instalaci?
Děkuji
Davex
Profil
Ondřej Ryška:
Jak mám tedy nastavit ty parametry aby nebylo povoleno relay?
Aby fungovalo doručování pouze do lokálních schránek na serveru (pro domény definované v mydestination), tak se zakomentuje řádek
# mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

Musím se přiznat, že o relay akorát vím, že nějak souvisí se zneužitím pro odesílání spamu a že ještě existuje nějaké open relay
Kdokoliv může zneužít k odesílání spamu Open Relay. Relay může zneužít k odesílání spamu pouze někdo, kdo se připojí k mail serveru z adres uvedených v mynetworks.

Podrobněji viz www.postfix.org/BASIC_CONFIGURATION_README.html

Nebo je Postfix nastaven jako ne-relay už implicitně po instalaci?
Ano, implicitně po instalaci by všechny mail servery neměli být open relay.
Ondřej Ryška
Profil
Ok díky, trocu chápu ale ještě trochu tápu. Pro upřesnění: potřebuju odesílat maily potvrzující objednávku z php skriptu. Maily tedy musí být posílány na jakoukoliv adresu na jakkýkoliv mailserver. Moje konfigurace vypadá takto:

myhostname = moje-doména.cz
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = ll-test, localhost.localdomain, , localhost
relayhost = 
#mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Píšete, že pokud nechci aby byl postfix nastaven jako relay, mám zakomenovat řádek mynetworks. Ale taky píšete že zprávy budou doručovány pouze do schránek na serveru. Já jsem tento řádek zakomentoval a odesílání na jakoukoliv adresu mi teď pořád funguje. Mám to tedy tak nechat? A celkově by mě zajímalo jestli pro účel pouhého odesílání mám konfiguraci nastavenou spráně, jestli třeba nemám mít nastavené inet_interfaces na loopback only. A poslední věc, maily mi chodí z adresy www-data@moje-domena.cz. Kterým parametrem je možné přenastavit www-data na mnou požadovaná jméno?
Děkuji
DJ Miky
Profil
Pro kontrolu, zda se tvůj server chová jako open relay, je na internetu několik nástrojů, např. http://mxtoolbox.com/diagnostic.aspx. Stačí zadat IP adresu serveru.

Z hlediska bezpečnosti je lepší, pokud mailserver nebude vůbec naslouchat na vnějším rozhraní, když to není potřeba. Tím se zároveň vyřeší i případný problém s open relay (zvenčí se nelze připojit => nelze zneužít server jako open relay).

Co se týče adresy odesílatele, toto je základní tvar, protože je pošta odesílána uživatelem www-data (pod kterým běží webový server a PHP). V manuálu PHP funkce mail() je příklad (č. 2) na změnu adresy odesílatele – stačí nastavit hlavičku From: na požadovanou adresu.
Davex
Profil
Ondřej Ryška:
Možná si budeme muset vyjasnit pojmy.

Relay znamená, že se e-maily budou přeposílat někam jinam.
Open Relay znamená, že server přeposílá všechny e-maily a je mu jedno odkud a od koho je dostal.

Maily tedy musí být posílány na jakoukoliv adresu na jakkýkoliv mailserver.
Tak to je potom potřeba mít Relay povolené.

Já jsem tento řádek zakomentoval a odesílání na jakoukoliv adresu mi teď pořád funguje.
Ještě je možné, že po zakomentování se uplatní nějaká výchozí hodnota, takže lepší by bylo pro vypnutí Relay nastavit prázdné
mynetworks =

Pro zákaz Open Relay není potřeba nic upravovat, protože stačí výchozí
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

A celkově by mě zajímalo jestli pro účel pouhého odesílání mám konfiguraci nastavenou spráně, jestli třeba nemám mít nastavené inet_interfaces na loopback only.
Pokud se budou e-maily pouze odesílat jinam a nebudou se přijímat z internetu pro lokální doručení, tak opravdu stačí nastavit
inet_interfaces = loopback-only
# nebo
inet_interfaces = 127.0.0.1, [::1]

Kterým parametrem je možné přenastavit www-data na mnou požadovaná jméno?
Pokud používáš PHP funkci mail(), tak

• v souboru php.ini
  sendmail_path = "/usr/sbin/sendmail -t -i -fodkoho@example.com"
• v pátém parametru funkce mail() (3. příklad)
Ondřej Ryška
Profil
DJ Miky:
Díky za tip s tím mxtoolboxem. Při správné konfiguraci kterou popsal DaveX mi to píše: SMTP Open Relay - OK - Not an open relay. Což je dobře protože chci mít zakázané open relay. Přidal jsem From: pro požadovanou adresu a maily teď už chodí se správnou adresou odesílatele.
Díky

Davex:
Díky za objasnění pojmů, to mi dost pomohlo. Už jsem teda pochopil, že pro doručování zpráv na jakýkoliv mailserver musí být povoleno Relay. Takže chci zakázat pouze open relay, což jak píšete je zakázáno implicitně. Takže řádek
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
nechám tak jak je. Dále jsem upravil init_interfaces na
inet_interfaces = loopback-only

Odesílání funguje jak má a jak jsem již zmíníl, http://mxtoolbox.com/diagnostic.aspx vypisuje že open relay je zakázáno. Takže teď je vše nastaveno jak potřebuji.
Děkuji.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: