Portál AbcLinuxu, 11. května 2025 04:32

Dotaz: Poštovní server

8.9.2014 17:14 Pavel | skóre: 17
Poštovní server
Přečteno: 3140×
Odpovědět | Admin
Zdravím, provozuji pár domén na ubuntu a chtěl bych pro ně zřídit emailové schránky. Nepotřebuji žádné vynikající řešení, očekávám maximálně 10 emailů za den. Očekávám od toho, že si budu moct vytvořit jednotlivé schránky a doménový koš, ke kterým se budu moct připojit jakýmkoliv klientem z jiného PC, či přímo připojením na server na web. Jaké balíčky by jste mi doporučily?

Řešení dotazu:


Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.9.2014 17:27 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Poštovní server
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jaké chceš záleží na tobě.

V ubuntu asi doecot (imap) a postfix (smtp).

Seriál: Stavíme poštovní server

A pěkný návod k nastavení postfixu: 6. Služby mailového servera (postfix)
9.9.2014 19:26 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Tak jsem si ten článek našel a postfix nastavil. Ovšem článek je starý a postfix nový, takže jsem se ani nepřipojil telnetem na server. Totéž jsem zkoušel i podle nastavení na root.cz a podle toho jsem postfix na portu 25 rozběhl, ovšem zase půlka cest je špatně. Navíc jsem dostal strach ze spamu, je možné nechat pouze jeden server viditelný z celého netu? Přeji si abych se k němu připojil odkudkoliv.
10.9.2014 00:39 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Poštovní server
Já tedy nevím ale nastavení postfixu mám pořád v /etc/postfix/soubory....

I ten starý článek funguje - samozřejmě třeba používat hlavu a né bezmyšlenkovitě opisovat vše co člověk přečte.

Jinak proč by jsi měl několik serverů pro poštu - pro domácí použití ti stačí jeden.
10.9.2014 13:21 jgf
Rozbalit Rozbalit vše Re: Poštovní server
nejlepsi proti spamu je bojovat spamem... posilat jim zpatky citaty z bible... :D
vdusek avatar 9.9.2014 19:52 vdusek | skóre: 27
Rozbalit Rozbalit vše Re: Poštovní server
Odpovědět | | Sbalit | Link | Blokovat | Admin

http://www.ispconfig.org/page/en/documentation.html - vyber si navod a postupuj podle něj

10.9.2014 16:37 middle
Rozbalit Rozbalit vše Re: Poštovní server
Odpovědět | | Sbalit | Link | Blokovat | Admin
Já před pár lety použil iRedMail. Je docela easy.
Max avatar 12.9.2014 17:12 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Poštovní server
Free verze neumí ani aliasy, to pak nemá cenu ani zkoušet.
Zdar Max
Měl jsem sen ... :(
10.9.2014 19:09 ydenda | skóre: 2
Rozbalit Rozbalit vše Re: Poštovní server
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak už bylo zmíněno, doporučuju taky postfix a dovecot. Přihoď si k tomu postfixadmin a budeš mít administraci snazší. Na internetu je návodů mnoho a bude lepší když si jich pár přečteš, než aby ti někdo nadiktoval co a jak. Každopádně nechceš open-relay (správnost některých nastaveních ověříš pomocí online toolů).

Proti spamu se dá bránit efektivně použitím základních opatření jako je příchozí EHLO/HELO nemůže obsahovat tvůj hostname, nebo IP (u mě na tomhle ztroskotá polovina čínských nájezdníků).

Dál se dá použít SPF kontrola a greylisting. Samozřejmě můžeš použít i progresivnější metody viz spamassassin nebo jiný prohledávátko emailů.

tady máš úryvek z jednoho mého serveru.

smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_helo_hostname, regexp:/etc/postfix/helo_check smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unlisted_recipient, reject_unauth_destination, reject_unauth_pipelining, check_policy_service inet:127.0.0.1:10023, check_policy_service unix:private/policy-spf

PS: netelnetneš se k sobě buď kvůli firewallu nebo jsi špatně povolil službu v master.conf co říká netstat nebo nmap?
11.9.2014 16:46 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Odpovědět | | Sbalit | Link | Blokovat | Admin
tak jsem v situaci, že už absolutně nevím kde hledat chybu. Snažím se zatím nastavit postfix tak, aby odeslal mail a zatím používám lokální uživatele. konfigurace main.cf je:
mail_owner = postfix
setgid_group = postdrop
default_privs = nobody
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
#daemon_directory = /usr/local/libexec/postfix
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/sbin/mailq
manpage_directory = /usr/local/man
sample_directory = /etc/postfix
readme_directory = /usr/share/doc/postfix/readme
alias_database = hash:$config_directory/aliases  #root
#transport_maps = hash:$config_directory/transport
mydestination = $config_directory/local #mojedomena.eu
myhostname = mail.mojedomena.eu
mydomain = mojedomena.eu
myorigin = $mydomain
mynetworks = 127.0.0.0/8, 10.200.1.1/16, 10.0.1.0/24 
relay_domains = $mydestination
masquerade_domains = $mydomain
masquerade_exceptions =
unknown_local_recipient_reject_code = 450
Pokud zprávu odešlu přes telnet, tak se do složky /var/spool/postfix/defer uloží daná zpráva:
<root@mojedomena.eu>: mail transport unavailable
recipient=root@mojedomena.eu
offset=525
dsn_orig_rcpt=rfc822;root@mojedomena.eu
status=4.3.0
action=delayed
reason=mail transport unavailable
jak docílit toho, aby se zpráva odeslala a uložila do složky pro doručené zprávy?
11.9.2014 17:40 ydenda | skóre: 2
Rozbalit Rozbalit vše Re: Poštovní server
O doručování na lokální schránky se stará LDA. Konfiguruje se v postfixu, v main.conf, pokud používáš dovecot, nastav ho do mailbox_command.
12.9.2014 15:48 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Ok, zatím bych tedy asi nastavil pořádně postfix. Jak docílim toho, abych mohl odeslat email ze vzdáleného PC, přes server? Pokud se připojím telnetem na SMTP tak po zadání příjemce dostanu hlášku 451 Temporary lookup failure
12.9.2014 22:53 ydenda | skóre: 2
Rozbalit Rozbalit vše Re: Poštovní server
Po změnách v souborech 'aliases' a 'local' musíš aktualizovat mapy postfixu. K tomu slouží postmap, kde jako parametr zadáš cestu k soboru kterej jsi měnil...

Abys mohl posílat emaily ze vzdálenýho počítače... musíš mít kam: tvuj postfix musí adresu znát - buď patří do tvojí domény a nebo ne a postfix se bude snažit email poslat jinam.

Pokud patří do domény, bude ti chybět nastavení LDA, viz muj předchozí post. Pokud ne, můžeš narazit, pokud PTR záznam neodpovídá DNS záznamu - to většina "cizích" SMTP serverů dneska požaduje.

Znova ti doporučim na zvážení mít virtuální domény v databázi, zvlášť pokud budeš chtít často měnit/přidávat schránky/domény.

já poprvé konfiguroval postfix, dovecot... podle Zdeňka Burdy - má hezky komentovaný postupy.

12.9.2014 23:09 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Vypada to jako pěkný návod. Jen mi zaráží nutnost mít dvě DB. Postfix a postfix admin, nějak postrádam smysl tohoto řešení
13.9.2014 19:23 chinook | skóre: 28
Rozbalit Rozbalit vše Re: Poštovní server
Mám pocit, že nemá dvě DB, ale dva uživatele. Jediný kdo do db zapisuje je postfixadmin. Ostatní jen čtou.
13.9.2014 23:45 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Ano, je tomu tak, přehlídl jsem se. Zamrzl jsem ale v konfiguraci postfixu. Pro transport do dovecotu je nutno do master.cf dopsat
dovecot unix    -       n       n       -       -      pipe
  flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -m ${extension}
Zapsal jsem to hned na začátek, ovšem nevím co mám zapsat místo vmail.
14.9.2014 05:01 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Tak jsem přeinstaloval postfix a hned se to rozběhlo. Teď se mi pro změnu nepřipojí dovecot do mysql. V logu je hláška:dovecot: auth-worker(20453): Error: mysql(/var/lib/mysql/mysql.sock): Connect failed to database (postfixadmin): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) - waiting for 1 seconds before retry Nastavení db mám v souboru /etc/dovecot/dovecot-sql.conf.ext:
driver = mysql
connect = host=/var/lib/mysql/mysql.sock dbname=postfixadmin user=postfix password=heslo
default_pass_scheme = MD5
password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1'
user_query = SELECT CONCAT('/home/mail/', maildir) AS home, 'Maildir/' AS maildir, 999 AS uid, 999 AS gid FROM mailbox WHERE username = '%u' AND active='1'
14.9.2014 05:09 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
heslo,uid a gid je samozřejmě správné
14.9.2014 18:51 ydenda | skóre: 2
Rozbalit Rozbalit vše Re: Poštovní server
jen pro jistotu: je mysql databáze opravdu na tom samém virtuálu co dovecot? Připojíš se z CLI virtuálky, kde je dovecot do dané databáze?
14.9.2014 20:27 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Ano, všechno mam na jednom localu. Do db se připojím. Ale zjistil jsem, že chybu dělá direktiva hosts = unix:/var/lib/mysql/mysql.sock přepsal jsem tedy cestu na localhost a problém je vyřešen.

Doinstaloval jsem roundcube a mohu odesílat emaily. Problém je, že emaily určené pro server, se doručují do složky /var/mail/ podle skutečných uživatelů. Virtuální tedy zřejmě nefungují. V logu nic není, ale zjistil jsem, že u konfigurace postfixu master.conf je špatný odkaz na dovecot.
dovecot unix    -       n       n       -       -      pipe
      flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -m ${extension}
Symlink deliver odkazující na soubor dovecot-lda je dostupný ve složce

/usr/lib/dovecot/dovecot-lda
Ovšem i po změně cesty je to stále stejné. Jak donutit dovecot uložení emailu do složky /home/mail/%d/%n/Maildir?
15.9.2014 02:19 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Zkusmo jsem vypnul dovecot a emaily se i tak doručují. Na vině je teda postfix. Existuje nějaká direktiva, pro vypnutí doručování?
15.9.2014 18:36 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Problém vyřešen, musel jsem uvést parametr "mydestination =".
15.9.2014 18:55 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vyskytla se další chybka, při připojení přes SMTP to hlásí
Došlo k neznámé chybě. Účet: 'domena.cz', Server: 'domena.cz', Protokol: SMTP, Odezva serveru: '451 4.3.0 <unknown[10.0.1.2]>: Temporary lookup failure', Port: 25, Zabezpečení (SSL): Ne, Chyba serveru: 451, Číslo chyby: 0x800CCC6A
To samé i pokud se připojím telnetem
15.9.2014 19:06 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Poštovní server
5.10.2014 14:51 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
To ale neřeší můj problém. Uživatele chci ověřovat přes dovecot. Pokud odešlu email z lokální sítě, tak je vše bez problému. Příchozí emaily z veřejné IP jsou také bez problému. Problém nastavává při odesílání emailu z internetu, přes můj server. Dostanu hlášku "Relay access denied". Tak jsem dopsal do mynetworks adresu 0/0 a server začal hlásit "Temporary lookup failure" jak pro příjem, tak odeslání. Asi to není ten správný zápis. Jak tedy povolit všechny adresy a nechat jen ověření přes dovecot? Aktuální main.cf je:
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_alias_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
virtual_transport = dovecot

virtual_minimum_uid = 999
virtual_uid_maps = static:999permit_mynetworks,
virtual_gid_maps = static:999

smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain
smtpd_recipient_restrictions = permit_mynetworks,
                               permit_sasl_authenticated,
                               reject_unknown_sender_domain,
                               reject_unknown_recipient_domain,
                               reject_unlisted_recipient,
                               reject_unauth_destination,
                               reject_unauth_pipelining

default_destination_concurrency_limit = 1
local_destination_concurrency_limit = 1
dovecot_destination_concurrency_limit = 1
dovecot_destination_recipient_limit = 1

disable_vrfy_command=yes
strict_rfc821_envelopes=yes
smtpd_soft_error_limit=5
smtpd_hard_error_limit=10
smtpd_helo_required=yes
smtpd_delay_reject=no
maximal_queue_lifetime = 6d
delay_warning_time = 8h
biff = no
enable_original_recipient = yes
append_at_myorigin = yes

smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)

append_dot_mydomain = no

readme_directory = no

myhostname = domena.cz
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = domena.cz

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

mydestination = 
relayhost = 
mynetworks = 127.0.0.0/8, 10.200.0.0/16, 10.0.1.0/24, 0/0
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
Je nutné v konfiguraci používat proměnné alias_database, alias_maps, smtpd_banner?
Max avatar 6.10.2014 07:41 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Poštovní server
Jako příklad ti snad poslouží toto :
smtpd_recipient_restrictions = 
 check_sender_access mysql:/etc/postfix/mysql-sender-access.cf,
 permit_mynetworks,
 permit_sasl_authenticated,
 reject_unauth_destination

smtpd_data_restrictions =
 reject_unauth_pipelining

smtpd_sender_restrictions =
 check_recipient_access mysql:/etc/postfix/mysql-recipient-access.cf

# je zapnuto defaultne :
smtpd_reject_unlisted_recipient = yes

# maximalni pocet prijemcu jedne zpravy : 
#smtpd_recipient_limit = 1000

# maximalni velikost zpravy (v Bytech ):
message_size_limit = 15728640
Pak to funguje tak, jak má. Tzn. emaily se doručují odkudkoli. Pokud adresát neexistuje, tak se email hned odmítne a nepřijme se. Odeslat přes server mohou jen uživatelé, kteří jsou ověřeni, nebo bez ověření ti, kteří se nacházejí v síti definované pomocí "mynetworks = ..."
Být tebou, tak si ještě nastavím doručování lokálních i zpráv podle MX záznamu.
Zdar Max
Měl jsem sen ... :(
6.10.2014 16:27 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Tak jsem to nastavil stejně. Akorát soubory mysql-sender-access.cf a mysql-recipient-access.cf jsem napsal pod jedním názvem. Jeho obsah je:
user = postfix
password = mojeheslo
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
Pokud se připojím ze vzdáleného pc přes telnet, v mail.log se objeví
Oct  6 16:10:46 server postfix/smtpd[18607]: connect from nazev_pc[ip_adresa]
Oct  6 16:11:41 server postfix/smtpd[18607]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Oct  6 16:11:41 server postfix/smtpd[18607]: warning: mysql:/etc/postfix/sql/mysql_virtual_recipient_access_maps.cf: table lookup problem
Oct  6 16:11:41 server postfix/smtpd[18607]: NOQUEUE: reject: RCPT from nazev_pc[ip_adresa]: 451 4.3.5 <odesilatel@seznam.cz>: Sender address rejected: Server configuration error; from=<odesilatel@seznam.cz> to=<postmater@server.cz> proto=SMTP helo=<seznam.cz>
Když zkusim připojit se k účtu v Thunderbirdu, v logu je:
Oct  6 16:25:32 v0j4k postfix/smtpd[18872]: connect from nazev_pc[ip_adresa]
Oct  6 16:25:32 server postfix/smtpd[18874]: connect from nazev_pc[ip_adresa]
Oct  6 16:25:32 server postfix/smtpd[18872]: improper command pipelining after EHLO from nazev_pc[ip_adresa]: QUIT\r\n
Oct  6 16:25:32 server postfix/smtpd[18872]: disconnect from nazev_pc[ip_adresa]
Oct  6 16:25:32 server postfix/smtpd[18874]: improper command pipelining after EHLO from nazev_pc[ip_adresa]: QUIT\r\n
Oct  6 16:25:32 server postfix/smtpd[18874]: disconnect from nazev_pc[ip_adresa]
Max avatar 6.10.2014 16:41 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Poštovní server
A čteš ty logy, co sem posíláš? Myslím, že hláška "Can't connect to local MySQL server through socket" mluví zcela jasně ;-).
Zdar Max
Měl jsem sen ... :(
6.10.2014 20:03 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Čtu a právě, že
# netstat -ln | grep mysql
unix  2      [ ACC ]     STREAM     NASLOUCHÁ    10771    /var/run/mysqld/mysqld.sock
a k mysql se právě normálně připojím. V celým main.cf volám cca 7 cf souborů, lze nějak poznat ve kterým to hlásí? I když všechny jsou stejné. A zarážející na tom také je, že tu chybu to hodí jen při přístupu přes telnet. Jinak ne. Nerozumím tomu.
Max avatar 6.10.2014 20:34 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Poštovní server
U toho, co to píše "/etc/postfix/sql/mysql_virtual_recipient_access_maps.cf"
Pokud tě to netrkne, tak máš ještě možnost č.2, logovat všechny mysql query a tam už by jsi snad i měl vidět, na jakém selectu to umírá, resp. jak přesně vypadá select (i když by to z toho souboru mělo být naprosto jasné).
Zkus si vzít ten select z thoo souboru, doplnit proměnné a hodit do mysql.
Zdar Max
Měl jsem sen ... :(
6.10.2014 20:59 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Ten select jsem psal výše. Zkoušel jsem ho a problém v něm není.
7.10.2014 13:06 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Tak jsem zapnul logování všech mysql dotazů a ten dotaz se ani neprovede a v logu se nic nezobrazí.
7.10.2014 13:26 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Vyřešeno tím, že jako host jsem uvedl 127.0.0.1. Ovšem i tak mohu stále odesílat emaily bez autentizace.
Max avatar 7.10.2014 13:39 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Poštovní server
Tzn., že jsi si upravil "/etc/hosts" tak, že tam není definován localhost, což není moc šťastné řešení a měl by jsi si to opravit ;-).
Pokud to máš nastaveno dle příkladu, tak můžeš bez autentizace odesílat ze všech sítí, které jsou definované v "mynetworks = ". Jseš si tedy jist, že to zkoušíš z jiné sítě než z těch, které jsi tam definoval?
Zdar Max
Měl jsem sen ... :(
7.10.2014 13:56 Pavel | skóre: 17
Rozbalit Rozbalit vše Re: Poštovní server
Nikoliv. Hosts adresu jsem musel uvést v cf souboru. Ve všech ostatních mám "host = localhost", jen v tomdle jedinném musí být "host = 127.0.0.1". Pravděpodobně to bude tím, že tam není zápis proxy:mysql:/etc/postfix/sql/.... V mynetworks mam pouze adresu localhostu. Přístup zkouším z pc, které je úplně na jiném segmetu.
7.10.2014 13:45 GeorgeWH | skóre: 42
Rozbalit Rozbalit vše Re: Poštovní server
tym si ale vynutil pristup do db cez TCP, co je pomalsie a viac zatazujuce ako pristup cez unix socket. takze idealne by bolo "opravit" tento problem:

Oct 6 16:11:41 server postfix/smtpd[18607]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.