Mailserver – Postfix, IMAP, Maildrop a MySQL


Září 2011: Novou verzi návodu najdete na BCVlogu: Mailserver – Postfix, Dovecot a MySQL.


Úvod

Když jsem si s kolegou začal zařizovat webhosting, zjistil jsem, že bez virtuálních uživatelů pro mailserver to nepůjde. Protože již delší dobu používám jako SMTP server postfix, tak jsem začal hledat vhodné řešení s jeho využitím. Popíšu tu řešení, které jsem si vybral. Postfix jako SMTP server, Courier-IMAP jako IMAP (IMAPs) a POP3 (POP3s) server a Courier-Maildrop pro třídění přijaté pošty, to vše využívající databázi MySQL pro vedení uživatelských účtů a autorizaci uživatelů. Všechna pošta se uchovává ve formátu Maildir. Nejprve jsem to rozeběhl na distribuci Slackware, ale protože mám na serveru Debian, tak jsem přemigroval svůj počítač na Debiana a všechny další věci, které zde budu popisovat se týkají jen a pouze Debiana (i když myslím, že pro Slackware jsou taky platný :-)


„Changelog“

leden 2006
        poznámky k RedHatu a jeho klonům
        přidány další postupy pro generování hesel pro uživatele
        změněna struktura databáze:
          přidány tabulky postfix_email a postfix_trash
          tabulce postfix_users přidány sloupečky
            bypass_... pro amavis (zatím tu není zapsán)
        přidán základ "uživatelského" manuálu

Reklama :-)

Protože se mi v mailboxu schází čím dál tím víc dotazů na konfiguraci mailserveru s uživateli v MySQL a počet mých nekomerčních (i komerčních) instalací se pěkně rozrůstá, dovolím si malou reklamu :-) .

Rozhodl jsem se nabízet konfiguraci mailserveru i za penízky. Pokud máte zájem o konfiguraci mailserveru, který obsahuje něco z následujích věcí, napište mi email a domluvíme se. Pracuji vzdáleně, ale pokud je potřeba mohu přijet i k vám. Mám živnostenský list, který pokrývá tuto činnost, takže vystavím doklad. Mailserver nainstaluji na většinu běžně používaných distribucí (Debian, Mandrake, Red Hat a jeho kolny, SuSE, Gentoo a další…)

  • SMTP server, umožňuje odesílání pošty odkudkoliv po ověření uživatelským jménem a heslem
  • POP3/IMAP server, slouží pro přístup k poště
  • Quoty
  • Antivir
  • Antispam
  • Webmail
  • Vygenerování SSL certifikátů – všechny služby fungují i přes SSL, takže je zajišťen bezpečný přístup uživatelů
  • Podle přání nakonfiguju tak aby se uživatelské účty uchovávaly v databázi MySQL, LDAPu nebo klasicky v konfiguračních souborech na disku. Antivir a antispam umožňují povolení pouze pro konkrétní uživatele.
  • V případě nějakých „nestandardních“ požadavků se nebojte napsat, určitě najdeme použitelné řešení.

Příprava všeho potřebného

  • Postfix je ke stažení na webu www.postfix.org, v Debianu stačí nainstalovat balíčky postfix (SMTP server), postfix-tls a postfix-mysql (Podpora MySQL v postfixu).
  • Spamassassin je v debiáních balíčcích, takže stačí apt-get install spamassassin
  • Courier-IMAP roste na sf.net/projects/courier/, pro Debiana potřebujeme balíčky courier-imap, courier-imap-ssl, courier-pop, courier-pop-ssl, courier-authmysql.
  • Courier-Maildrop lze stáhnout ze stránky sf.net/projects/courier/, Debianisti mě teď asi moc rádi mít nebudou, ale je ho potřeba zkompilovat, protože debiání balíček nepodporuje MySQL. Zda maildrop podporuje MySQL zjistíte spuštěním s parametrem -v:
    tsunami:~# maildrop -v
    maildrop 1.6.3 Copyright 1998-2003 Double Precision, Inc.
    GDBM extensions enabled.
    Maildir quota extension enabled.
    Virtual user database via MySQL extension enabled.
    This program is distributed under the terms of the GNU General Public
    License. See COPYING for additional information.
    
  • MySQL databázi stáhnete (překvapivě) na stránce www.mysql.com, v Debianu jsou to balíčky mysql-server, mysql-client, mysql-common (a pro méně zdatné nebo pohodlné adminy také phpmyadmin), také potrřebujete balíček libmysqlclient-dev, bez kterého nezkompilujete maildrop.
  • Apache + php – apache se nachází na www.apache.org a php na www.php.net, pro debiana je snad instalace jasná :-)

Jediný skutečný uživatel který bude v systému potřeba je virtual, ktery bude ve skupině virtual, jeho UID bude 5000 a GID skupiny virtual bude také 5000. Domácí adresář tohoto uživatele je /home/virtual a práva na ten adresář nastavíme pomocí chmod 700 /home/virtual

Příprava SW pro RHEL/CentOS

Pokud se rozhodnete instalovat mailserver na nějakém Red Hatu nebo z něj odvozeném systému, tak se vám asi bude hodit následující popis.

Zdroje pro YUM

Do konfigurace YUMu je potřeba přidat Dagův repozitář:

$ cat > /etc/yum.repos.d/dag.repo <<<"
[dag]
name=Dag-RHEL-Yum
baseurl=http://dag.linux.iastate.edu/dag/redhat/el$releasever/en/$basearch/dag

http://www.mirrorservice.org/sites/apt.sw.be/redhat/el$releasever/en/$basearch/dag

http://mirrors.ircam.fr/pub/dag/redhat/el$releasever/en/$basearch/dag

http://apt.sw.be/redhat/el$releasever/en/$basearch/dag

enabled=1
gpgcheck=1
includepkgs=clamav clamav-devel clamav-db unrar amavisd-new nomarch arc lzop unarj \
ripole freeze cabextract zoo lzo perl-Convert-UU perl-Unix-Syslog unarj \
perl-TimeDate perl-Net-Server perl-MailTools perl-MIME-tools \
perl-IO-stringy perl-Convert-UUlib perl-Convert-TNEF perl-Convert-BinHex \
perl-Config-IniFiles perl-Compress-Zlib perl-CPANPLUS perl-BerkeleyDB \
perl-Archive-Zip perl-Archive-Tar
"

Nainstalovaný SW z repozitářů YUMu

cyrus-sasl
cyrus-sasl-devel
cyrus-sasl-md5
mysqlclient10
mysqlclient10-devel
expect
mysql-devel
mysql
gamin-devel
pcre
pcre-devel
spamassassin
procmail
clamav
clamav-db
perl-Date-Calc
perl-Bit-Vector
perl-DBD-MySQL
pam_mysql

Nainstalovaný SW z vlastních balíčků

courier-authlib
courier-authlib-userdb
courier-authlib-pipe
courier-authlib-mysql
courier-authlib-pipe
courier-authlib-mysql
courier-authlib-devel
courier-imap
maildrop-devel
maildrop-man
maildrop
postfix

Návod na kompilaci courieru je na jeho domácí stránce. Pro courier-imap a courier-authlib jsem si upravoval spec soubory, vykopal jsem z nich závislosti na postgresql(nebo tak něco, je to delší doba co jsem to dělal, až to budu dělat znova, tak si to pořádně zapíšu:-)). Soubory ke stažení: courier-imap.spec, courier-authlib.spec. Postfix je potřeba překompilovat, protože ten dodávaný v RHEL/CentOSu neumí spolupracovat s MySQL databází. Upravený spec souboru si můžete stáhnout: postfix.spec


Nastavení programů

MySQL

Instalaci a základní nastavení databáze MySQL do svého systému snad zvládne každý a kdo ne, tak ať si najde howto třeba na www.google.com.

Vytvoření databáze

Vytvoříme si databázi třeba s názvem postfix a dame na ní právo select uzivateli postfix s heslem postfix, kterého budeme používat pro přístup k datům.
Přihlásíme se k mysql serveru jako uživatel s potřebnými právy

$ mysql -u root -p
Enter password:

mysql> use postfix

Database changed
mysql>

a začneme vytvářet potřebné tabulky:

-- Databáze: `postfix`
-- 

-- --------------------------------------------------------

--
-- Struktura tabulky `maildrop_rules`
-- 

CREATE TABLE `maildrop_rules` (
  `id` int(11) NOT NULL auto_increment,
  `user_id` int(11) NOT NULL default '0',
  `no` int(11) default NULL,
  `pravidlo` enum('if') NOT NULL default 'if',
  `hlavicka_pravidlo` enum('X-Spam-Flag','From','To','Cc','Bcc','List-Post','List-Id',
'Delivered-To','(From|Cc|To)','X-Listname') default 'From',
  `hlavicka_hodnota` varchar(255) NOT NULL default '',
  `akce` enum('to') NOT NULL default 'to',
  `cil` varchar(255) NOT NULL default '',
  `active` enum('y','n') NOT NULL default 'n',
  `komentar` varchar(255) NOT NULL default '',
  `mail2web` enum('y','n') NOT NULL default 'n',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Struktura tabulky `postfix_access`
-- 

CREATE TABLE `postfix_access` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `source` varchar(128) NOT NULL default '',
  `access` varchar(128) NOT NULL default '',
  `type` enum('recipient','sender','client') NOT NULL default 'recipient',
  PRIMARY KEY  (`id`), KEY `source` (`source`), KEY `type` (`type`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Struktura tabulky `postfix_alias`
-- 

CREATE TABLE `postfix_alias` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `alias` varchar(128) NOT NULL default '',
  `destination` varchar(128) NOT NULL default '',
  PRIMARY KEY  (`id`), KEY `alias` (`alias`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Struktura tabulky `postfix_relocated`
-- 

CREATE TABLE `postfix_relocated` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `email` varchar(128) NOT NULL default '',
  `destination` varchar(128) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Struktura tabulky `postfix_transport`
-- 

CREATE TABLE `postfix_transport` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `domain` varchar(128) NOT NULL default '',
  `destination` enum('local:','virtual:','maildrop:') NOT NULL default 'local:',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `domain` (`domain`),
  KEY `domain_2` (`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Struktura tabulky `postfix_trash`
-- 

CREATE TABLE `postfix_trash` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `email` varchar(128) NOT NULL default '',
  `destination` varchar(128) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Struktura tabulky `postfix_users`
-- 

CREATE TABLE `postfix_users` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `email` varchar(128) NOT NULL default '',
  `crypt` varchar(128) NOT NULL default '',
  `clear` varchar(128) default NULL,
  `name` tinytext,
  `uid` int(11) unsigned NOT NULL default '5000',
  `gid` int(11) unsigned NOT NULL default '5000',
  `homedir` tinytext NOT NULL,
  `maildir` tinytext NOT NULL,
  `quota` tinytext,
  `access` enum('Y','N') NOT NULL default 'Y',
  `postfix` enum('Y','N') NOT NULL default 'Y',
  `spam_tag_level` int(11) default NULL,
  `spam_tag2_level` int(11) default NULL,
  `spam_kill_level` int(11) default NULL,
  `message_size_limit` bigint(20) default NULL,
  `bypass_virus_checks` enum('Y','N') default NULL,
  `bypass_header_checks` enum('Y','N') default NULL,
  `bypass_spam_checks` enum('Y','N') default NULL,
  `bypass_banned_checks` enum('Y','N') default NULL,
  PRIMARY KEY  (`id`), UNIQUE KEY `email` (`email`),
  KEY `email_2` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Struktura tabulky `postfix_virtual`
-- 

CREATE TABLE `postfix_virtual` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `email` varchar(128) NOT NULL default '',
  `destination` mediumtext NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Struktura tabulky `postfix_email`
-- 

CREATE TABLE `postfix_email` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `email` varchar(128) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Kdyby se vám zdálo, že je v nějaké tabulce sloupeček navíc, případně je celá tabulka zbytečná, tak je to v pořádku :-) Jsou to pozůstatky z nějaké první verze howto. Funkčně to ničemu nevadí.

Popis tabulek

postfix_alias

Tabulka se používá pouze při lokálním doručování, neuplatní se pokud doručujete virtuálním uživatelům. Je to také jediná tabulka, která umožňuje přímo spouštět externí skripty.

postfix_alias
Sloupec Popis
id Není potřeba, je to jedinečný identifikátor
alias Alias, který chcete přesměrovat.
destination Cíl přesměrování. Může se použít jedna či více emailových adres(oddělené čárkou), soubor pro doručení do souboru, roura „|“ pro spuštění příkazu a předání přez STDIN nebo lze použít :include:/file/name a email bude poslán na adresy uvedené v daném souboru.
postfix_relocated

Tato tabulka slouží pouze pro oznámení o tom, že na dané emailové adrese nelze uživatele zastihnout. Oznámí novou adresu kde se uživatel nachází.

postfix_relocated
Sloupec Popis
id Není potřeba, je to jedinečný identifikátor
email Originální emailová adresa.
destination Nová adresa. kde se uživatel nachází. Je také možné zadat unknown, když neznáme uživatelovu novou adresu.
postfix_transport

postfix_transport
Sloupec Popis
id Není potřeba, je to jedinečný identifikátor
domain Doména, pro kterou zpracovávám poštu.
destination Tato položka obsahuje cil doručení pro postfix. local: pro lokální doručování,maildrop: pro maily, které budou tříděny a virtual: pro přímé doručení virtuálním účtům. Lze použít i jiné cíly doručení, více viz man transport
postfix_users

postfix_users
Sloupec Popis
id Není potřeba, je to jedinečný identifikátor
email Email uživatel, zároveň slouží jako login pro imap/pop3
crypt Zašifrované heslo pro courier-imap a pop3, sifrovanou formu ziskame napriklad pomoci programu mkpasswd --hash=md5 heslo(jeden človíček měl problémy s tím, že mkpasswd připojovalo na konec vygenerovaného řetězce \n tak bacha na to), případně můžete použít i openssl passwd -1 nebo funkci crypt v php:crypt("foobar",'$1$blahblahg$')
name Jméno uživatele není důležité
uid The uid (User ID) of the vmail-user, that we are going to create. This is the only unix-user, that is needed for virtual-delivery, since there still must be some kind of ownership on the stored mails.
You can also create your local unix-users in this table, if you want to give them the possibility to use CRAM-MD5 challenging and maybe give them another password, than the one used for local access. The fun thing about Courier is, that it will check both this and the local password, so that the unix-user will be able to authentificate with both passwords, however CRAM-MD5 challenging can not be used on allready encryptet passwords.
gid GID virtuálního uživatele.
homedir Absolutní cesta k domácímu adresáři uživatele. V mém případě to je /home/virtual pro virtuální uživatele.
maildir Relativní cesta k maildiru. pro postfix je formát Maildir/ pro lokální uživatele. Používám formát domena.tld/user/. Cesta musí končit lomítkem, jinak by to nebyl maildir!
quota Quota pro postfix funguje pouze s mailboxem a ne s maildirem ktery tu používáme. Jestliže chceme použít quotu s maildirem, tak máme možnost zvolit maildrop (popíšu níž) nebo patch přímo pro postfix, který je na adrese http://web.onda.com.br/nadal/
access Povolení/zakázání imap, pop3 a smtp-auth
postfix Povolení/zakázání účtu pro postfix a maildrop.
antispam Povolení/zakázání spamassasina. Spamassasin se spouští jen přez maildrop a to ještě pro vybrané uživatele(výkon stroje je přeci jen limitován :-) .
postfix_virtual

Tabulka slouží jako náhrada za /etc/aliases pro virtuální uživatele.

postfix_virtual
Sloupec Popis
id Není potřeba, je to jedinečný identifikátor
email Zde se píše alias pro cílovou adresu (políčko destination).
Formát:
„user@domena.tld“ – vše co přijde na tuto adresu bude přeposláno na cílovou adresu (políčko destination)
„@domena.tld“ – vše co přijde na tuto doménu se přepošle na na cílovou adresu (políčko destination)
destination Cíl přesměrovní v podobě jedné a více emailových adres (oddělují se čárkou)
postfix_trash
postfix_trash
Sloupec Popis
id Nění potřeba, je to jedinečný identifikátor
email Doména, pro kterou zapneme doménový koš. Zápis je ve tvaru @domena.tld, pokud chcete aby nějaká adresa z této doméney nekončila v doménovém koši, je třeba abyste ji uvedli v tabulce postfix_email
destination Cílová adresa, kam se přeposílá všechna pošta, která směřuje do doménového koše. Adresa může být z domény, pro kterou je nastavené doménový koš, hlavně je potřeba aby to byl existující uživatelský účet.
postfix_email
postfix_email
Sloupec Popis
id Nění potřeba, je to jedinečný identifikátor
email Emailová adresa, která je vyloučena z doménového koše a je doručovaná přímo do uživateli.
postfix_access
postfix_virtual
Sloupec Popis
id Není potřeba, je to jedinečný identifikátor
source If type is set as follows, this is what happens:

  • recipient
    – obsahuje domena.tld nebo uzivatel@domena.tld. Depending on your choice it allows discards either all mail that should go to „domain.top“ or overrides other filters to allow mail from that domain. Zadání samostatné emailové adresy dělá to samé, ale jen pro ni.
  • sender
    – to samé jako recipient, ale platí pro adresu odesílatele.
  • client
    domena.tld – přiřadím na whitelist/blacklist všechny emaily z počítačů. které patří do této domény.
access Možné hodnoty: OK, REJECT nebo třeba 550 Too much spam in this world. kde 550 je číslo chyby a Too much a spam in this world. je slovní informace.
type Možné hodnoty: recipient, sender, client.

Postfix

Základní nastavení

Konfigurační soubory postfixu jsou v adresáři /etc/postfix (nebo také v /usr/local/etc/postfix).

master.cf

V souboru jsou potřeba následující řádky:

smtp inet  n - - - - smtpd
virtual unix - n n - - virtual
main.cf

nastavíme schránky do formátu Maildir:

home_mailbox = Maildir/

Oznámíme postfixu kde má hledat potřebné tabulky:

alias_maps            = mysql:/etc/postfix/mysql-aliases.cf
relocated_maps        = mysql:/etc/postfix/mysql-relocated.cf
transport_maps        = mysql:/etc/postfix/mysql-transport.cf
virtual_maps          = mysql:/etc/postfix/mysql-virtual.cf \
mysql:/etc/postfix/mysql-email.cf mysql:/etc/postfix/mysql-trash.cf

virual_maps má definovaných víc konfiguračních souborů, mysql-virtual.cf použijeme pro definici „aliasů“ pro virtuální uživatele (náhrada za /etc/aliases), mysql-email.cf je důležitý pro doručování v případě, že máte definovaný doménový koš. Pokud je v tabulce postfix_email uveden email a zároveň je na danou doménu definován doménový koš, bude email doručen do uživatelovy schránky a ne do doménového koše. No a v mysql-trash.cf je definována tabulka pro doménové koše.

a nastavíme lokální doručování:

local_recipient_maps = $alias_maps $virtual_mailbox_maps unix:passwd.byname

Dále nastavení pro virtuální uživatele:

virtual_mailbox_base = /home/virtual
virtual_mailbox_maps  = mysql:/etc/postfix/mysql-virtual-maps.cf
virtual_uid_maps      = mysql:/etc/postfix/mysql-virtual-uid.cf
virtual_gid_maps      = mysql:/etc/postfix/mysql-virtual-gid.cf
      
smtpd_recipient_restrictions = check_recipient_access mysql:/etc/postfix/mysql-recipient.cf,
                               reject_unknown_sender_domain,
                               permit_mynetworks,
                               permit_sasl_authenticated,
                               check_relay_domains,
                               reject
      
mysql-aliases.cf
user         = postfix
password     = postfix
dbname       = postfix
table        = postfix_alias
select_field = destination
where_field  = alias
hosts        = 127.0.0.1
mysql-client.cf
user         = postfix
password     = postfix
dbname       = postfix
table        = postfix_access
select_field = access
where_field  = source
additional_conditions = and type = 'client'
hosts        = 127.0.0.1
mysql-recipient.cf
user         = postfix
password     = postfix
dbname       = postfix
table        = postfix_access
select_field = access
where_field  = source
additional_conditions = and type = 'recipient'
hosts        = 127.0.0.1
mysql-relocated.cf
user         = postfix
password     = postfix
dbname       = postfix
table        = postfix_relocated
select_field = destination
where_field  = email
hosts        = 127.0.0.1
mysql-sender.cf
user         = postfix
password     = postfix
dbname       = postfix
table        = postfix_access
select_field = access
where_field  = source
additional_conditions = and type = 'sender'
hosts        = 127.0.0.1
mysql-transport.cf
user         = postfix
password     = postfix
dbname       = postfix
table        = postfix_transport
select_field = destination
where_field  = domain
hosts        = 127.0.0.1
mysql-virtual.cf
user         = postfix
password     = postfix
dbname       = postfix
table        = postfix_virtual
select_field = destination
where_field  = email
hosts        = 127.0.0.1
mysql-virtual-maps.cf
user                  = postfix
password              = postfix
dbname                = postfix
table                 = postfix_users
select_field          = maildir
where_field           = email
additional_conditions = and postfix = 'y'
hosts                 = 127.0.0.1
mysql-virtual-gid.cf
user                  = postfix
password              = postfix
dbname                = postfix
table                 = postfix_users
select_field          = gid
where_field           = email
additional_conditions = and postfix = 'y'
hosts                 = 127.0.0.1
mysql-virtual-uid.cf
user                  = postfix
password              = postfix
dbname                = postfix
table                 = postfix_users
select_field          = uid
where_field           = email
additional_conditions = and postfix = 'y'
hosts                 = 127.0.0.1
mysql-email.cf
user         = postfix
password     = postfix
dbname       = postfix
table        = postfix_email
select_field = email
where_field  = email
hosts        = 127.0.0.1

SMTPs a AUTH

Nastavení tls pro postfix je celkem jednoduché, vytvoříme adresář /etc/postfix/ssl/ do kterého umístíme ssl certifikáty a upravíme soubor /etc/postfix/main.cf

Pro ověřování uživatelů použijeme SASL.

main.cf
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = mail.domena.tld
broken_sasl_auth_clients = yes
Generování certifikátu

Vygenerujeme certifikáty, které potřebujeme. Provádíme jako uživatel root.

openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

<- zadejte heslo pro smtpd.key

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

<- Zadejte heslo pro smtpd.key
<- Zkratka země („CZ“)
<- Název státu („Czech Republic“)
<- Město
<- Název organizace
<- FQDN („mail.domena.tld“)
<- Emailova@adresa.tld
Další informace jsou volitelé

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

<- zadejte heslo pro smtpd.key

openssl rsa -in smtpd.key -out smtpd.key.unencrypted

Zadejte heslo pro smtpd.key.

mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

<- Zadejte heslo pro smtpd.key
<- Zkratka země („CZ“)
<- Název státu („Czech Republic“)
<- Město
<- Název organizace
<- FQDN („mail.domena.tld“)
<- emailova@adresa.tld

SASL2

Pro ověření přihlášení uživatele při odesílání pošty přes SMTPs protkol použijeme stávající MySQL databázi. SASL2 nastavíme tak aby používal pam_mysql.

smtpd.conf

Nastavení SASL2 je v debianu v souboru /etc/postfix/sasl/smtpd.conf.

log_level: 3
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
main.cf

Je potřeba trochu upravit main.cf:

smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject

smtpd_recipient_restrictions = permit_sasl_authenticated,...
saslauthd

Pro saslauthd je třeba přidat pár parametrů (hlavně jde o -r, který způsobí, že se bude předávat celá emailová adresa a ne jen username), buď je můžete na tvrdo napsat do spouštěcího skriptu nebo je v Debianu můžete zadat do soubouru /etc/default/saslauthd:

START=yes
PARAMS="-r -m /var/spool/postfix/var/run/saslauthd"
MECHANISMS="pam"

Adresář /var/spool/postfix/var/run/saslauthd si vytvořte, protože zřejmě nebude existovat. Během hraní si s saslauth jsem si ještě udělal symlink ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd.

/etc/pam.d/smtp

Konfigurace PAM knihovny je v souboru /etc/pam.d/smtp:

auth sufficient pam_mysql.so user=DBUZIVATEL passwd=DBHESLO host=localhost \
 db=postfix table=postfix_users usercolumn=email passwdcolumn=clear
auth sufficient pam_mysql.so user=DBUZIVATEL passwd=DBHESLO host=localhost \
 db=postfix table=postfix_users usercolumn=email passwdcolumn=crypt crypt=1 md5=y
auth required pam_deny.so

account sufficient pam_mysql.so user=DBUZIVATEL passwd=DBHESLO host=localhost \
 db=postfix table=postfix_users usercolumn=email passwdcolumn=crypt where=postfix=Y
account required pam_deny.so
          

Zalomení řádků v konfiguráku pamu zrušte, přidal jsem ho sem jen kvůli lepšímu formátování textu.

Řádek s passwdcolumn=clear můžete vynechat, mám ho tam z důvodu zpětné kompatibility s první verzí tohoto howto. Dřív jsem měl pro ověření SMTP heslo v plaintextu.

master.cf

Nutné úpravy v souboru master.cf, je potřeba povolit toto:

smtps  inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

Použití SMTPs a autorizace je velmi jednoduché, poštovním klientu si nastavte pro odchozí server (SMTP):

  • Port: 465
  • Uživatel: emailova@adresa
  • Heslo: to je snad jasne, ne? :-)
  • Bezpečnost – šifrování: SSL
  • Metoda autentizace: LOGIN

SpamAssassin

Pěkný generátor konfigurace pro SpamAssassin je na stránce http://www.yrex.com/spam/spamconfig.php

Zastarelé: Spamassassina spouštím při startu jako démona (program spamd) a pak kontrolu pošty spouštím z maildropu pomoci programu spamc přímo pro konkrétního uživatele. Je to zahrnuto i do skript; pro generování konfiguračních souborů maildropu. Skript se koukne do tabulky postfix_users do sloupečku antispam a když tam najde y tak se bude spouštět spamassasin.

Maildrop

Pár lidiček se mě ptalo proč jsem si zvolil Maildrop pro lokální doručování? Odpověď je velmi jednoduchá: narozdíl od procmailu si umí základní informace o uživateli stáhnout z MySQL databáze, nezatěžuje při zpracovávání emailu počítač jako procmail (narozdíl od procmailu pasuje pouze hlavičku emailu) a taky se mi víc líbí zápis pravidel :-)

Instalace


UPDATE: pro novější verze maildropu nemusíte provádět překompilvání s podporou MySQL (ono to ani nejde). Konfigurace maildropu byla přesunuta do authdaemona (takže používá stejný konfigurák pro připojení k MySQL jako courier-imap)


Použil jsem verzi 1.6.3, překlad ze zdrojového kódu byl bez problémů.

$ tar -xjf maildrop-1.6.3.tar.bz2
$ cd ./maildrop-1.6.3

$ ./configure --prefix=/usr --enable-maildropmysql \
--enable-maildirquota --with-devel \
--with-mysqlconfig=/etc/maildrop/maildropmysql.cf \
--enable-syslog=1 --enable-restrict-trusted=0 \
--enable-sendmail=/usr/sbin/sendmail --with-etcdir=/etc/maildrop \
--enable-maildrop-uid=virtual --enable-maildrop-gid=virtual

$ make
su - root
# make install
# make install-man

Nastavení

Do souboru /etc/postfix/master.cf přidejte tyto dva řádky:

maildrop  unix  -       n       n       -       -       pipe
    flags=R user=virtual:virtual argv=/usr/bin/maildrop -V1 -d ${recipient}

Konfigurace maildropu pro přístup k MySQL je uložená v souboru /etc/maildrop/maildropmysql.cf:

hostname localhost
port 3306
database postfix
dbuser login-maildropu-do-MySQL
dbpw heslo-maildropu-do-MySQL
dbtable postfix_users
default_uidnumber 5000
default_gidnumber 5000
uid_field email
uidnumber_field uid
gidnumber_field gid
maildir_field maildir
homedirectory_field homedir
quota_field quota
mailstatus_field postfix
where_clause and postfix='y'

Pro databázi MySQL musíme mít uživatele pro přístup maildropu k datům, můžem použít uživatele co máme pro postfix, ale já jsem si udelal jiného kvůli snadnějšímu ladění (z logu MySQL se pak snadno pozná jestli maildrop přistupuje k databázi a jak se jí dotazuje)

v adresáři /home/virtual vytvoříme soubor .mailfilter s obsahem:

LOGNAME=tolower($LOGNAME)
include "/home/virtual/.mailfilters/$LOGNAME"

.mailfilter vkládá konfigurační soubor pro každého virtuálního uživatele (/home/virtual/.mailfilters/uzivatel@domena.tld). Postfix použije maildrop v případě, že změníme transport pro doménu na "maildrop:".

Pro každého uživatele, který je v doméně s transportem maildrop: je potřeba mít alespoň minimální konfigurační soubor:

FROM='uzivatel@domena.tld'

to "/home/virtual/domena.tld/uzivatel/."

Pozor, maildrop narozdíl od procmailu sám od sebe nezakládá maildiry!

Pro uchováváni pravidel pro třídění pošty je v MySQL použita tabulka maildrop_rules z které pomocí skriptů můžem snadno vygenerovat konfigurační soubory maildropu.

Skripty se spouštějí pod uživatelem virtual, skript md-gen vygeneruje konfigurační soubory pro všechny uživatele. Skript md-gen-user jen pro uživatele, jehož emailovou adresu zadáme jako parametr při spouštění. Skripty automaticky ukládají konfigurační souboru do složky /home/virtual/.mailfilters/. Pokud nemá uživatel žádná pravidla pro maildrop nadefinvána, vytvoří skript minimální konfigurační soubor, který je potřeba.

Před prvním použitím skriptů si nastavte v jejich záhlaví jméno a heslo pro přístup do databáze. Uživatel pod kterým do databáze budete přistupovat musí mít právo na SELECT v tabulce postfix_users a maildrop_rules.

Quota

Nastavení quoty pro maildrop v tabulce postfix_users, buňce quota: S je použito pro maximální velikost všech zpráv v maildiru a C je použito pro počet zpráv v maildiru. Hodnota „5000000S,300C“ nastaví quotu quota na 5,000,000 bytů nebo 300 zpráv, záleží co se splní dřív. Jestliže je tento sloupec prázdný, quota se neuplatňuje.

Courier

Na Debianu se konfigurační soubory Courieru nacházejí v adresáři /etc/courier.

imapd

Do konfiguračního souboru imapd přidejte (případně pozměňte)

AUTHMODULES="authdaemon"
IMAP_CAPABILITY="IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT \
                THREAD=REFERENCES SORT AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE"
IMAPDSTART=YES

pop3d

Nastavení pop3 se provede v souboru pop3d

AUTHMODULES="authdaemon"
POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1"
POP3DSTART=YES

authdaemonrc

authmodulelist="authmysql authpam"

authmysqlrc

MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_DATABASE postfix
MYSQL_USER_TABLE        postfix_users

MYSQL_LOGIN_FIELD       email
MYSQL_CRYPT_PWFIELD     crypt
MYSQL_UID_FIELD         uid
MYSQL_GID_FIELD         gid
MYSQL_HOME_FIELD        homedir
MYSQL_MAILDIR_FIELD     maildir
MYSQL_NAME_FIELD        name
MYSQL_WHERE_CLAUSE      access='y'

Uživatelský manuál

Přidání nové domény do obsluhy postfixu

  • tabulka postfix_access
  • source: domena.tld
  • access: OK
  • type: recipient
  • tabulka postfix_transport
    • domain: domena.tld
    • destination: maildrop: – je možné i lokální doručování, stačí zadat local: nebo jinou hodnotu, podle toho co chcete s poštou pro tuhle doménu dělat (třeba přeposlat na jiný SMTP server: smtp:jiny.server.tld).

    Založení uživatelského účtu

    • tabulka postfix_users
    • email: emailova@adresa
    • crypt: md5 hash hesla získaný z mkpasswd –hash=md5 heslo
    • name: Uzivatelovo Jméno nepovinné
    • uid: 5000
    • gid: 5000
    • homedir: /home/vritual
    • maildir: domena.tld/user/Maildir/
    • quota: S je pouzito pro maximální velikost vsech zpráv v maildiru a C je pouzito pro pocet zpráv v maildiru. Hodnota „5000000S,300C“ nastaví quotu quota na 5,000,000 byt nebo 300 zpráv, zálezí co se splní dív. Jestlize je tento sloupec prázdný, quota se neuplatuje. Je mozné nastavit napíklad jen 5000000S.
    • access: Y ­ je vzdy poteba jinak se nebude nic dorucovat
    • bypass_virus_checks: pokud vlozíte Y nebude se provádt kontrola vir
    • bypass_spam_checks: to samé pro spam
    • bypass_header_checks: to samé pro kontrolu hlavicek emailu

    Po zalození uzivatele do databáze je poteba spustit skript md-gen.pl nebo md-gen-user.pl aby se vytvoil konfiguracní soubor pro maildrop.

    Mám funkční řešení tak, že není nutné generovat uživateli filtr pro maildrop. Potřebné adresáře se založí samy při příchodu prvního emailu. Uživatelský soubor s pravidly maildropu se použije pouze v případě, že mu chcete umožnit jeho vlastní pravidla pro třídění.

    Přidání adresy nebo serveru na blacklist

    Někdy se hodí přidat adresu nebo rovnou celý server na blacklist tak aby byl odmítnut nějakým „chytrým“ hlášením.

    • tabulka postfix_access
    • source: emailova@adresa, jméno serveru nebo doména
    • access: 550 Nemam rad spam!
    • type: „sender“ nebo „recipient“, záleží odkud a kam daný email putuje

    Zdroje

    Autor

    $Id: mailserver.html,v 1.8 2006/01/13 21:48:45 tsunami Exp $

    Related posts:

    1. OpenSSH

    189 Responses to Mailserver – Postfix, IMAP, Maildrop a MySQL

    1. tsunami says:

      Ahoj,

      posli mi ho na email zdenda[zavinac]zdenda.com, podívám se na něj a připojím ho sem ke stažení.

    2. wm says:

      děkuji za odpověď.. problém byl v tom, že jsem neměl přesměrování ye stejné do stejné schránkz, nenapadlo mě, že by to mohlo být touhle drobností.

      Ale aby toho nebylo málo, ještě mě trápí jedna věc:) Když pro doménu nastavím doménový koš tak ten koš „sebere“ všechny maily, i když nějaké adresy tu účet mají…

      v main.cf jsem zkusil dát řádek s virtual maps úplně nakonec souboru, ale to zrovna nepomohlo :)

      dík za odpověď

    3. tsunami says:

      Zkusím na tom zapracovat…

    4. tsunami says:

      Je celkem jedno kde je řádek virtual_maps v main.cf, spíš bych provedl něco jako navrhuju u http://www.zdenda.com/Mailserver-Postfix-IMAP-Maildrop-MySQL#comment-16 a do /etc/postfix/mysql-email.cf bych nabouchal

      user         = db_uzivatel
      password     = db_heslo
      dbname       = postfix
      table        = postfix_users
      select_field = email
      where_field  = email
      hosts        = 127.0.0.1
      

      Doménový koš bych definoval v mysql v tabulce postfix_trash a v souboru /etc/postfix/mysql-kos.cf by bylo:

      user         = db_uzivatel
      password     = db_heslo
      dbname       = postfix
      table        = postfix_trash
      select_field = destination
      where_field  = email
      hosts        = 127.0.0.1
      

      Jakmile najdu trochu času, tak to do dokumentu všechno napíšu.

    5. LaCosta says:

      :) ) Mno skript md-gen neprojde skrz upravenu postfix_users no a ci ho chystas upravit alebo nie ;) Funguje len na predoslej ked bolo len antispam

    6. tsunami says:

      To chápu, ale nerozumím tomuhle:

      Chcel som sa opytat ako je to zo spamom konkretne sa-learn pripadne ak zle oznaci treba spravit dalsie konto a obsah adresara davat pre sa-learn ? .. dik za radu

      Jen tak mimochdem, ten md-gen nesmysl si můžeš opravit i ty sám, není na tom nic těžkého :-)

    7. LaCosta says:

      Nj :) ) sem lazy …. kuknu na to. Co sa tyka toho spamu ide mi o to ze ked ho zle oznaci kam to poslat aby sa naucil. Pred par mesiacmi nez som nasadil tvoju konfiguraciu, som mal 2 konta na ktore sa preposlal mail ktory bud neoznacil a bol spam a opacne. Tak som ho ucil … Ucil sa z jednoho suboru v ktorom boli vsetky maile. Otazka je ked su rozdelene maile na jednotlive files, ci sa nieco meni nemam teraz cas sa k tomu dostat aby som testoval .. keby to slo tak to iba prestavim :) )

      P.S. chcel som mail server rozchodit na druhom serveri a stale kvaka ze mam zle heslo :( vsetko spravene podla funkcnej konfiguracie (na prvom serveri) aky je potom rozdiel ? :( . V logu vidim ako do SQL sa pripaja a selectuje, ale proste heslo je zle .. Debian sarge – testing
      heslo som robil jak cez mkpasswd tak cez openssl… bez uspechu

      P.S. 2 uz nebudu oxidovat :D

    8. tsunami says:

      Aha, jestli ti jde o použití formátu schránky Maildir proti klasickému mboxu pro učení spamassassina pomocí sa-learn, tak je mu to jedno. Prostě mu předhoď celý adresář se spamem (nebo hamem).

      k tvému P.S. – bohužel nemám věšteckou kouli, ale můžeš zkusit http://www.vestirna.cz, třeba tam najdeš proč to hlásí špatné heslo :-)

    9. steh says:

      Mam dotaz, lze do teto konfigurace nejak zapracovat moznost pro urcitou adresu posilat jen notifikaci o doslem emailu? Tedy ne kopii emailu, ale pouze kratkou zpravu napr. Prisel vam email od $sender… nebo tak neco…

      Lze to s touto konfiguraci? Resilo by to totiz posilani napriklad na gsm brany, ktere odmitaji prijmout dlouhe zpravy nebo zpravy s prilohami.

      Diky

    10. tsunami says:

      Pokud používáš pro doručování do schránek program maildrop, tak si můžeš nastavit téměř jakékoliv přeposílání emailů nebo jen krátkých upozornění.

    11. steh says:

      A mohl bych pozadat o priklad, jak pro jednoho uzivatele ze 100 zasilat notifikace na nejaky email? Moc maildropu nerozumim a vubec nevim jak na to.

      Diky.

    12. Pavel says:

      AHoj, mohl by mi prosim nekdo poradit jak nastavit autoreply pomoci .mailfilter u jedne nebo dvou scharenek ?

    13. tsunami says:

      Co má dělat „autoreply“ a proč musí být zrovna v maildropu? Co třeba použít program vacation?

    14. Pavel says:

      no potrebuju u dvou schranek nastavit automaticke odpovidani
      nakonec jsem se dostal do stavu kdy sem u te schranky nastavil transport na maildrop s tim ze tam pak dam cc do nejakeho toho vacation na auto odpoved, jenze v logu postfixu mam user@domena.tld user unknown: invalid username
      mam adresar: virtual/.mailfilters/user@domena.tld/ a v nem soubor .mailfilter a v nem polozku cc ….
      nejsem si jist jestli jsem to udelal spravne

    15. Koudis says:

      to mi delalo pri konfiguraci taky.. zkontroluj to vse znovu.. urcite tam budes mit nekde chybku.. je to blbost, ael tusim jestli to prave nebylo to ze jsem mel spatne nastaveny prava v /home/vmail resp. /home/virtual

    16. steh says:

      Lze to tedy? Nebo mohl by mne prosim nekdo odkazat na nejaky odkaz, ktery se tim zabyva?

      Diky

    17. tsunami says:

      pravidla pro maildrop mám v souboru /home/virtual/.mailfilters/emailova@adresa

      Pokud používáš nastavení podle mého návodu, tak to máš špatně.

    18. tsunami says:

      Lidičky, copak si neumíte poradit sami? Nechce se mi odpovídat na každou kravinu, zvlášť když je to velmi dobře popsané v dokumentaci k maildropu.

    19. Pavel says:

      sakra, takze ne user@domena.tld/soubor, ale uz ta adresa je soubor, no ja sem vul, jdu to zkusit predelat

    20. Pavel says:

      tak jsem to opravil.
      dal jsem do home/virtual/.mailfilters/test@xxxxxx.cz
      a do nej ty dva radky jak je v navodu ze je to minimalni konfigurace
      no a postfix mi porad zaryte vraci: :(
      : user unknown. Command output: Invalid user specified.

      zkousel jsem i postfix reload a ani to nepomohlo

    21. tsunami says:

      Znovu jsem si přečetl co ti to hlásí

      : user unknown. Command output: Invalid user specified.

      Máš v databázi založeného uživatele?

    22. Lukin says:

      Jedna mensi chyba na kterou jsem prisel pri dorucovani maildropu. Pokud nekdo zasle na domenu nejaky email (To: neco@domena.cz) a jsou v emailu nastavene dalsi kopie (Cc: neco2@domena.cz) na jine emaily stejne domeny, tak z nekterych mailserveru zpracuje email spatne a doruci ho jen uzivateli To:, ale jiz to nedoruci kopie uzivatelum Cc:
      Toto lze upravit parametrem v souboru main.cf:

      maildrop_destination_recipient_limit = 1

      Pak jiz dorucuje spravne i kopie v emailu….

    23. Pavel says:

      Ano, uzivatel tam je, dokonce pokud nastavim transport na virtual, tak se to normalne doruci do maildir, ale pokud nastavim transport na maildrop tak nic a zkousel jsem i v prikazove radce maildrop -d user a nic :(
      kontroloval jsem i konfigurak maildropu pro pristup k DB, tam je vse v poradku
      jen kdyz sem zapnul –log=/var/log/mysql u DB tak sem tam nenasel zadny zaznamo tom ze by maildrop si nacital data z DB :(

    24. tsunami says:

      Jakou verzi maildropu používáš? Máš maildrop nastavený tak aby pracoval s MySQL?

    25. steh says:

      Kdybych si umel poradit sam, tak se neptam, ze jo… Jak jsem psal vubec nevim, jak maildrop funguje, takze jsem netusil, ze to umi. Diky, odkaz na dokumentaci maildropu mi bude stacit. Doufam, ze tam najdu co potrebuju.

      Dik

    26. LaCosta says:

      Nemas preklep v maildropmysql.cf ? ja som sa sekol v jednom znaku, ale to ze nevidis v logu mysql ze nema ani snahu je divne.

      maildrop -v by mal v jednej vete spomenut podporu mysql
      maildrop -d mail@domena.cz ti vrati co ?

      P.s. mne maildrop vracia toto: maildrop: signal 0x0B takze mam o zabavu postarane …

    27. Pavel says:

      2.0.1 ted jsem dal make uninstall a jdu to zkusit znova zkonfigurovat prelozit a nainstalit

    28. Pavel says:

      maildrop -d user@domena.tld mi vrati:
      Invalid user specified.

    29. tsunami says:

      Maildrop novějších verzí se už nekompiluje přímo proti MySQL. Je to napsané přímo v dokumentu:

      UPDATE: pro novější verze maildropu nemusíte provádět překompilvání s podporou MySQL (ono to ani nejde). Konfigurace maildropu byla přesunuta do authdaemona (takže používá stejný konfigurák pro připojení k MySQL jako courier-imap)

    30. tsunami says:

      Pěkná dokumentace je man maildropfilter jinak taky docela pomáha diskuzní fórum http://news.gmane.org/group/gmane.mail.maildrop

    31. bl4z4 says:

      Mam takovej veselej problem ve Slackware neni podpora PAM. Co s tim? Nejaky napad?

    32. tsunami says:

      Přestaň používat Slackware a nainstaluj si nějakou jinou distribuci, která PAM podporuje nebo si do Slacka PAM přidej (ale to asi nezvládneš, když se ptáš co s tím…).

    33. m1ra says:

      Zdravím, je to super návod, dokonce jsem to podle něj zvládnul i já, ale nějak to nemůžu dotáhnout do konce, protože mi funguje všechno až na vybírání virtuálních mailboxů pomocí pop3d, imap nepotřebuju. Když nastavím v konfigu pop3d MAILDIRPATH napevno pro konkrétního virtuálního uživatele, všechno proběhne v pořádku, e-mail se stáhne, ale nevím jak nastavit tu proměnou, aby to bylo univerzální pro všechny, potřebuju to pro víc virtuálních domén, používám Slackware, jestli to je důležitá informace a pop3d jsem kompiloval. Díky za odpověď a jen tak dál, je to skvělá práce.

    34. bl4z4 says:

      Aha, nedokoncil jsem myslenku. Myslel jsem jiny typ autentizace. Distribuci se mi moc menit nechtelo, ale pridavani PAM do slackware mi prijde zbytecne pracny. Vypada to na Debian. Diky za reakci. Pekny clanek.

    35. m1ra says:

      Tak si naštěstí můžu odpovědět sám:-) Zapomněl jsem v authmysqlrc upřesnit v jakém sloupci databáze se nachází cesta k maildiru, takže už to funguje.

    36. Koudis says:

      jsem nakonec zjistil ze je to v podstate jen snuska prikazu aptitude pro instalovani softu a pak kopirovani jiz hotovych konfiguraku, takze je to znacne zmatecny :-)
      Ale jestli to nekdy dovedu do lepsi podoby tak to urcite poslu..

    37. Koudis says:

      Cau Zdendo,
      uz te to hafo dotazu asi stve, ale jestli si najdes chvilku :)
      Snazil jsem se aby kdyz v shellu na mailserveru napisu prikaz
      „mail root“ a poslu touto cestou mail aby byl dorucen do lokani schranky a mohl jsem si pod prihlasenym uzivatelem root precist prikazem „mail“
      nejprve jsem zjistil ze mi adresy sender i recipient meni z „root“ na „root@domena.tld“ a timpadem se to snazil poslat „venkem“
      tak jsem do tabulky postfix_access zadal „domena.tld“ dorucovat do „local:“ ted to sice pise v logu relay=local coz si myslim ze je ok, dokonce pise i ze se to odeslalo, ale po napsani prikazu „mail“ zadny mail nedorazil.. kam teda ten mail sel ?
      prikladam kus logu (snad dostatecny)
      Feb 15 01:48:17 andrejka postfix/pickup[22152]: ED62B85F2: uid=0 from=
      Feb 15 01:48:17 andrejka postfix/cleanup[25495]: ED62B85F2: message-id=<20060215004817.ED62B85F2@andrejka.koudis.net>
      Feb 15 01:48:18 andrejka postfix/qmgr[22153]: ED62B85F2: from=
      , size=336, nrcpt=1 (queue active)
      Feb 15 01:48:18 andrejka postfix/local[25499]: ED62B85F2: to=
      , orig_to=, relay=local, delay=1, status=sent (d
      elivered to maildir)
      Feb 15 01:48:18 andrejka postfix/qmgr[22153]: ED62B85F2: removed

      P.S. jeste jsem si zkousel hrat s tabulkou postfix_alias, ale tam jsem taky nic nevykoumal, tak jsem ji zas vyprazdnil..
      diky moc za radu
      Koudis

    38. Koudis says:

      postfix_access mysleno postfix_transport

    39. Koudis says:

      koukam v tom logu to vynechalo vsechno adresy mezi spicatyma zavorkama :( maji tam byt.. ale to snad neni tak podstatny

    40. Koudis says:

      no tak jsem prave zjistil ze se mi ty maily dorucovali do /root/Maildir/.. mozna za par hodin zjistim i jak docilit aby se dorucovali tak abych je mohl cist prikazem „mail“ :)

    41. Koudis says:

      takova drobnost, na tomhle radku
      smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject

      by melo byt jeste “ mysql:/etc/postfix/mysql-client.cf“
      aby se v tabulce postfix_access dali omezovat clienti co se pripojuji
      takze cele to bude:
      smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-client.cf, permit_mynetworks, reject
      ja to mam tedy bez SASL

    42. Pavel says:

      zkousel jsem to i tak i tak, no jeste tam zkusim nacpat tustarou verzi maildropu …

    43. LaCosta says:

      Pripajam konfiguraciu pre antvir … Ak su tam nejake nezrovnalosti dajte vediet, inak toto mi funguje.

      Treba nainstalovat amavis a clamav

      Postfix uprava:

      master.cf
      smtp-amavis unix – – n – 2 smtp
      -o smtp_data_done_timeout=1200
      -o disable_dns_lookups=yes

      127.0.0.1:10025 inet n – n – – smtpd
      -o content_filter=
      -o local_recipient_maps=
      -o relay_recipient_maps=
      -o smtpd_restriction_classes=
      -o smtpd_client_restrictions=
      -o smtpd_helo_restrictions=
      -o smtpd_sender_restrictions=
      -o smtpd_recipient_restrictions=permit_mynetworks,reject
      -o mynetworks=127.0.0.0/8
      -o strict_rfc821_envelopes=yes

      ——-

      main.cf
      content_filter = smtp-amavis:[127.0.0.1]:10024

      ——-

      nastavenie amavisu:

      amavisd.conf
      $inet_socket_port = 10024;
      $forward_method = ‘smtp:127.0.0.1:10025′;
      $notify_method = $forward_method;

      do cronu treba este pridat freshclam pre aktualizaciu ….

      amavis sa da uplne upravit toto je zaklad aby to fungovalo.
      pripadne to mozem niekde uplne laicky rozpisat … ak by bol zaujem, ale zdenda to mozno skorej stihne :D

    44. pavel says:

      hotovo,
      vyreseno tak, ze jsem nainstalil maildrop 1.6.3 a nastavil pro ty konkretni schranky dorucovani na maildrop (cela domena je jinak virtual)
      a auto odpovedi bezi jako o zivot ;) )

      diky za rady

    45. Koudis says:

      Zdravim, nemas k tomu zkonfigurovanyho i spamassasina ? Takhle mam taky antivir, ale spamassasin zrejme vubec nefunguje. Zkousel jsem ho nastavit aby vzdy pridaval halvicku a indexu spamu a nikdy nic neprida.. muzu ho vubec pouzivat i na odchozi maily ?

    46. LaCosta says:

      spam mam normalne nakonfigurivany podla navodu co je tu + nejaky upravy. Spam ide cez maildrop ak ide mail von zoberie ho priamo postfix takze sa to na mail neaplikuje … ale spravit by to mozna slo

    47. tsunami says:

      Jakmile seženu pár hodin času a zrovna bude venku hnusně (když je pěkně, tak jdu s foťákem na procházku :-) ), tak napíšu jak se nastavuje spamassassin tak aby se spouštěl v amavisu. Nějaký čas snad najdu o víkendu, tak se těšte… :-)

    48. miki says:

      maildrop je nastaveny s podporou mysql. dorucovanie mailov funguje v poriadku az na vynimku dorucenia jedneho velkeho aliasu na cca 300 lokalnych adries.
      postfix vypise na niektore adresy chybovu hlasku maildropu: Invalid user specified. Uzivatel pritom existuje a ina posta sa mu doruci v poriadku.
      Skusal som aj spravit skript, ktory lokalne doruci ale iba na jedno konto 3000 mailov. vsetky prejdu v poriadku. Nemal niekto podobny problem ?

    49. wm says:

      Všechno funguje už jak má, jen maildrop zlobí :(

      v postfix_virtual mam aliasy, ktery maji dorucit jeden mail na vice schranek, postfix to spravne rozpozna a vsechny ty adresy kam se ta zprava pak ma dorucit predava maildropu v tom pamarametru -d. Jenze maildrop to doruci jen do te prvni v poradi a na dalsi se uz vykasle. Slo by to nejak doladit? :(

      Takhle postifix spouští maildrop:

      /usr/local/courier/bin/maildrop -d info@mysh.cz sebi@mysh.cz vlada@mysh.cz

      a v logu postfixe je

      Feb 26 10:43:13 Holly postfix/pipe[24529]: 3EB4F5B2C5: to=, relay=maildrop, delay=5, status=sent (mysh.cz)
      Feb 26 10:43:13 Holly postfix/pipe[24529]: 3EB4F5B2C5: to=, orig_to=, relay=maildrop, delay=5,status=sent (mysh.cz)
      Feb 26 10:43:13 Holly postfix/pipe[24529]: 3EB4F5B2C5: to=, orig_to=, relay=maildrop, delay=5, status=sent (mysh.cz)

      takže postfix nic špatně nedělá. Všechno to padne až v maildropu :(

      Poradí prosím někdo, jak toto dořešit? dííky

    50. wm says:

      odpovím si sám…

      do main.cf bylo potřeba ještě přidat
      maildrop_destination_concurrency_limit = 1

      treba to nekomu dalsimu pomuze.

    51. the.max says:

      ktery vykend tim byl myslen? tetnto co prave ubehl:-D?

    52. tsunami says:

      Ano, tento co prave ubehl. Proste jsem misto toho abych sedel u pocitace a neco psal sel ven…

    53. Koudis says:

      Jsem se nejak zamotal.
      Jsem zjistil ze jsem mel do nedavna zakomentovane radky s overeni klienta, odeilatele i prijemce. Takze v podstate verejne smtp :)
      Server je umisten na vnitrni siti za NAT.
      Prvnim ukolem je odesilat maily z vnitrni site. Tudiz mam nastaveny v rozsahu mynetworks toto:
      mynetworks = 192.168.1.0/24 192.168.2.0/24 127.0.0.1/8
      odesilani je bez problemu..
      jenze pro prijem mailu se preklada na NATu vnejsi adresa na 192.168.1.1 a posila se to na mailserveru takze to zapadne do rozsahu a zas muze kazdy z venku vesele posilat.
      Nevedel jsem jak tu jednu IP z toho rozsahu vykopat tak jsem ji dal zakazat pres mysql jako client_restriction na konretni IP, ale pak se mi zas vraci vsechny prichozi maily jako nedorucitelne pac vsechny chodi z teto IP adresy. Nejak mi neni jasny ten rozdil mezi prichozi a odchozi postou.
      Muzete mi k tomu nekdo neco napsat ? Nebo odkaz na clanek kde je tohle konkretne vysvetleno ? Dik

    54. Anonymous says:

      uz vim co mi zpusobilo muj zmatek, pri odstranovani vyuziti ssl, jsem omylem odstranil i toto:
      reject_unauth_destination
      tudiz mi tam chodila posta ktera mi nepatrila a zatezovala spam filter

    55. Radek Stastny says:

      At delam co delam, nekde mam chybu. Konfiguraci jsem celou nekolkrat prosel, ale pri prijmu mailu mi postfix hlasi
      554 : Client host rejected: Access denied;
      Zkousel jsem „mail user@domena.tld“ a to funguje, mail se ulozi na spravne misto. Hledam bybu n vastaveni smtp, ale nemuzu najit. Nesetkal jste se s tim nekdo ?? Diky za rady.

    56. radvan says:

      Dobrý den,
      na serveru přijímám poštu pro doménu domena.tld a rád bych přeposílal (s kopií nebo bez) poštu některých uživatelů domény domena.tld na doménu pro kterou poštu nepřijímám.

      postfix_access:
      domena.tld | OK | recipient


      postfix_transport:
      domena.tld | virtual:

      zkoušel jsem:

      postfix_virtual:
      uzivatel@domena.tld | nejaky_uzivatel@nejaka_domena.tld

      ale to mi hlásí „Domain not found (in reply to RCPT TO command)“, což je asi dáno tím, že pro danou doménu opravdu poštu nepřijímám. Jak tedy vyřešit tuto situaci? Raději bez maildropu.

    57. tsunami says:

      A seš si jistý, že doména na kterou to přeposíláš skutečně pro server existuje? Funguje ti správně resolver?

    58. Koudis says:

      nevite nekdo jak nastavit amavis aby kontroloval jen jednu domenu ? resp. aby jednu nekontroloval ? nasel jsem jen rozdeleni pri ip adresy, ale ja mam vsechny domeny na jedne ip… pak jsem nasel neco ohledne header_check, ale to jsem nepochopil.. kdyby nekdo vedel tak moc dekuju..
      pripadne at ji kontroluje ale at vzdy test projde..
      takhle mi hlasi user unknown in virtual table, je to totiz nejak divne cely nastaveny, smichany z nekolika navodu a posila to na domenu vacation.domain.tld kopii mailu pro auto odpovedi a amavis hlasi chybu..

    59. Anonymous says:

      Caute,
      mam taky problem skusim poslat mail a dostanem taku chybovu hlasku:
      (user unknown. Command output: Invalid user specified. )
      SKontrolujem mysql.log a zvlastny select:
      select maildir from postfix_users where email = ‘nejaka_domena.tld’ and postfix = ‘y’
      Nieje tam user@nejaka_domena.tld ale iba nejaka_domena.tld
      Konfiguroval som to podla tohto navodu a skontroloval som to dvakrat.

      Os: Debian testing
      Verzia maildropu je 2.0.2
      ****:~/soft/maildrop-2.0.2# maildrop -v
      maildrop 2.0.2 Copyright 1998-2005 Double Precision, Inc.
      GDBM extensions enabled.
      Maildir quota extension enabled.
      This program is distributed under the terms of the GNU General Public
      License. See COPYING for additional information.
      ****:~/soft/maildrop-2.0.2#

      Skusim prikaz courierauthtest ci mi najde usera -> pohoda
      Ked pozriem mysql.log zvlastny select:
      SELECT email, crypt, „“, uid, gid, homedir, maildir, „“, name, „“ FROM postfix_users WHERE email = „test@****.sk“ AND (access=’y')

      Ked skusim maildrop -d user@domain.tld tak vobec sa nedotazuje mysql a vypluje:
      Invalid user specified.
      Ked spustim gdb maildrop
      a potom r -d test@nejaka_domena.tld
      tak dostanem iba :
      (no debugging symbols found)
      (no debugging symbols found)
      (no debugging symbols found)
      (no debugging symbols found)
      (no debugging symbols found)
      (no debugging symbols found)
      (no debugging symbols found)
      (no debugging symbols found)
      (no debugging symbols found)
      (no debugging symbols found)
      (no debugging symbols found)
      (no debugging symbols found)
      Invalid user specified.

      Program exited with code 0103.
      (gdb)

      Ak som nieco zabudol dodat tak napiste.
      Vdaka
      Jano

    60. radvan says:

      Tak jsem zjistil, že mi to hodí tu chybu jen pokud pošlu mail ze svého počítač pomocí echo „text“|mail uzivatel@domena.tld. Pokud použiju mutt, tak je vše v pořádku. Mám Slack. a na serveru Debian.

    61. Anonymous says:

      Cauko
      problem s maildrop. Dorucovanie posty pre virtualneho uzivatela ide v pohode. Ale ked chcem poslat mail localnemu uzivatelovi tak dostanem tuto hlasku:
      (user unknown. Command output: Invalid user specified. )

      Vsetko je nastavene podla tohto navodu.
      Ked skusim maildrop -d ide to v pohode ale ked skusim
      maildrop -d @domena.tld tak to vypise tu istu hlasku.

      Kde moze byt problem?
      Dik

    62. wladik says:

      Zdravím,
      podařilo se vám někomu rozchodit aby po přijetí mailu se spustil nějaký příkaz?

      Zatím to mám takto
      tabulka transport
      domain destination
      local.test.cz local:

      tabulka virtual
      email destination
      test@local.test.cz local.example.com

      tabulka alias
      alias destination
      local.example.com |/datadisk/test

      ale po poslání mailu na adresu test@local.test.cz končím na této chybě
      (expanded from ): user
      unknown. Command output: Invalid user specified.

      čím to? :(

    63. Koudis says:

      Jaktoze v tomto pripade nedojde k zacykleni ? se to vlastne preposle z test@test.cz na treba koudis@koudis.net a test@test.cz a z toho test@test.cz opet na ty dve adresy atd dokola ne ? :) me se na jednom zpatlanym mailserveru, ktery je polepen z rucnych kusu navodu ted stava ze prave toto presmerovani udelo to ze do lokalni schranky mail ulozi v poradku jednou, ale do vzdalene tj. koudis@koudis.net prijde dvakrat :( a vubec netusim jak to eliminovat

      viz log:

      Apr 18 15:32:30 server postfix/smtpd[9451]: connect from mail.perfect-system.cz[82.142.65.217]
      Apr 18 15:32:30 server postfix/smtpd[9451]: 614037014E: client=mail.perfect-system.cz[82.142.65.217]
      Apr 18 15:32:30 server postfix/cleanup[10226]: 614037014E: message-id=<4444EA4A.8060305@cmi.cz>
      Apr 18 15:32:30 server postfix/qmgr[1603]: 614037014E: from=, size=1331, nrcpt=2 (queue active)
      Apr 18 15:32:30 server postfix/smtpd[9451]: disconnect from mail.perfect-system.cz[82.142.65.217]
      Apr 18 15:32:32 server postfix/smtpd[9952]: connect from localhost[127.0.0.1]
      Apr 18 15:32:32 server postfix/smtpd[9952]: 4E1CC70168: client=localhost[127.0.0.1]
      Apr 18 15:32:32 server postfix/cleanup[10226]: 4E1CC70168: message-id=<4444EA4A.8060305@cmi.cz>
      Apr 18 15:32:32 server postfix/qmgr[1603]: 4E1CC70168: from=
      , size=1566, nrcpt=1 (queue active)
      Apr 18 15:32:32 server postfix/smtpd[9952]: disconnect from localhost[127.0.0.1]
      Apr 18 15:32:32 server postfix/smtp[8968]: 614037014E: to=, orig_to=, relay=127.0.0.1[127.0.0.1], delay=2, status=sent (250 2.6.0 Ok, id=09781-04, from MTA: 250 Ok: queued as 4E1CC70168)
      Apr 18 15:32:32 server postfix/smtp[10382]: 4E1CC70168: to=, relay=mail.perfect-system.cz[82.142.65.217], delay=0, status=sent (250 Ok: queued as 6E163238A8)
      Apr 18 15:32:32 server postfix/qmgr[1603]: 4E1CC70168: removed
      Apr 18 15:32:33 server postfix/smtpd[9952]: connect from localhost[127.0.0.1]
      Apr 18 15:32:33 server postfix/smtpd[9952]: 6F50E70168: client=localhost[127.0.0.1]
      Apr 18 15:32:33 server postfix/cleanup[10226]: 6F50E70168: message-id=<4444EA4A.8060305@cmi.cz>
      Apr 18 15:32:33 server postfix/qmgr[1603]: 6F50E70168: from=, size=1655, nrcpt=2 (queue active)
      Apr 18 15:32:33 server postfix/smtpd[9952]: disconnect from localhost[127.0.0.1]
      Apr 18 15:32:33 server postfix/smtp[10199]: 614037014E: to=
      , relay=127.0.0.1[127.0.0.1], delay=3, status=sent (250 2.6.0 Ok, id=09520-09, from MTA: 250 Ok: queued as 6F50E70168)
      Apr 18 15:32:33 server postfix/qmgr[1603]: 614037014E: removed
      Apr 18 15:32:33 server postfix/virtual[9955]: 6F50E70168: to=
      , relay=virtual, delay=0, status=sent (delivered to maildir)
      Apr 18 15:32:33 server postfix/smtp[10382]: 6F50E70168: to=, orig_to=, relay=mail.perfect-system.cz[82.142.65.217], delay=0, status=sent (250 Ok: queued as 8B074238A8)
      Apr 18 15:32:33 server postfix/qmgr[1603]: 6F50E70168: removed
      Apr 18 15:32:37 server courierpop3login: Connection, ip=[::ffff:194.228.230.250]

      vse v puvodnim zneni snad se toho neda zneuzit :)
      nechapu proc se duplikuje, kdyby nekdo vedel, tak dik moc za radu

    64. Koudis says:

      no tak ty ostry zavorky to neprezili no :( orig_to= je vzdy treba test@test.cz a to= je m.koudelka@perfect-system.cz

    65. Koudis says:

      tak chyba byla jinde, v master.cf mi u amavisu chybel parametr no_adress_mapping

    66. Kepi says:

      zkus zakomentovat cast smtpd_client_restrictions a reloadnout. Pokud ti to pak pojede, tak hledej chybu tam…. pred chvili jsem se potykal s tim stejnym.

    67. Kepi says:

      Psal jsem to nekde vyse, zkuste mrknout na sekci smtpd_client_restrictions. Podle navodu mi to nefakcilo, kdyz zakomentuju, tak jede….

      • trolo says:

        no, problem je v tom ze ked to takto zadam tak posta dorazi do adresa1@domena a dorazi aj
        do adresa2@kdekoliv, ale ta mi uz dorazi 2x ten isty :(

    68. Kepi says:

      > P.s. mne maildrop vracia toto: maildrop: signal 0x0B takze mam o zabavu postarane …

      Překompiloval jsem si debianí balíček pro courier-maildrop a stalo se mi to stejné. Na nějakém fóru jsem našel info, že 0x0B je sigsegv a díky strace pak to, že v mém případě nezvládl najít konfigurák.

      Původní umístění konfiguráku v debianu je totiž /etc/maildrop/maildropmysql.cf, kdežto v originálním zdroji /etc/maildropmysql.config.

      Rychlé řešení mě napadá v tomto případě dvojí:

      • ln -s /etc/maildrop/maildropmysql.cf /etc/maildropmysql.config
      • přidat při kompilaci parametr –with-mysqlconfig=/etc/maildrop/maildropmysql.cf

      Snad to někomu helpne.

    69. Anonymous says:

      nemelo by toto presmerovat vsechny maily se subjectem test presmerovat do podslozky root ?

      if ( /^Subject:.*test/ )
      {
      to „/home/virtual/koudis.net/koudis/.root/.“
      }

      snazim se aby se mi posta pro root@koudis.net tridila uz na serveru do slozek, pouzivam totiz mail klienty na ruznych kompech a nechci na nich delat pravidla na postu :(

    70. tsunami says:

      Používám následující pravidlo pro filtrování podle toho komu je email určený takže předpokládám, že by to tvé mohlo také fungovat (nechce se mi to zkoušet).

      if (/^To:.*arp@domena.kterou.nereknu.cz/)
      {
              `/usr/bin/test -d /home/virtual/domena.cz/uzivatel/Maildir/.arpwatch`
              if ($RETURNCODE == 1)
              {
                      `/usr/bin/maildirmake /home/virtual/domena.cz/uzivatel/Maildir/.arpwatch`
              }
              to /home/virtual/domena.cz/uzivatel/Maildir/.arpwatch/.
      }
      
    71. Koudis says:

      aha, diky moc.. ja jsem nakonec zjistil ze jsem mel nastaveno dorucovani virtual, pricemz jestli spravne chapu se pravidla nepouzivaji, uz jen proto ze jsou to maildropfilters :) ale kdyz jsem prepnul na maildrop dorucovani, tak mi to zacalo pro celou domenu hlasit user unknown :( zadne schranky, zadne aliasy, zadne domain kose :(
      a nejak me nenapadalo proc to.. priznam se budu to poradne resit az dnes, ale kdyby me nekdo nakopnul spravnym smerem tak budu vdecny

    72. the.max says:

      uz si na tom zapracoval? ja na tom zkoncil prave ted

    73. tsunami says:

      Ne, nemám čas.

      • Oldster says:

        Zdravím, narazil jsem na následující problém a tak mě napadlo, zda někdo nemůže poradit.
        Pro doručování lokálně používám maildrop a doručování v lokálu na virtuální domény i aliasy je OK. Není však možné doručit poštu odkudkoliv mimo lokál (tedy zkouším doručit na alias virtuálního uživatele), pošta je vždy odmítnuta.

        V main.cf mám toto:
        smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, permit_auth_destination, check_relay_domains, check_recipient_access mysql:/etc/postfix/vmail/mysql-recipient.cf, reject_unauth_destination, reject_unknown_sender_domain
        smtpd_sender_restrictions = permit_mynetworks, check_sender_access mysql:/etc/postfix/vmail/mysql-sender.cf, permit_sasl_authenticated, reject
        smtpd_client_restrictions = permit_mynetworks, check_client_access mysql:/etc/postfix/vmail/mysql-client.cf, permit_sasl_authenticated, reject

        A v logu toto:
        Dec 11 12:26:11 test01 postfix/smtpd[6265]: > smtp.nextra.cz[195.70.130.2]: 554 : Client host rejected: Access denied
        Dec 11 12:26:11 test01 postfix/smtpd[6265]: > smtp.nextra.cz[195.70.130.2]: 554 Error: no valid recipients

        Pokud z main.cf odstraním smtpd_client_restrictions, mám v logu tuto chybu:
        Dec 6 09:03:55 test01 postfix/smtpd[20766]: NOQUEUE: reject: RCPT from smtp.nextra.cz[195.70.130.2]: 554 : Sender address rejected: Access denied;
        Dec 6 09:03:55 test01 postfix/smtpd[20766]: > smtp.nextra.cz[195.70.130.2]: 554 Error: no valid recipients

        No a pokud odstraním ještě smtpd_sender_restrictions, vše sice funguje, jenže mám open relay.
        Domnívám se, že problém je v tom, že postfix z nějakého důvodu nepozná, že pošta má být doručena lokálně do virtuální schránky (že by nevěděl, jaké virtuální domény a aliasy má?), proto zcela správně poštu odmítne (žádné jiné podmínky splněny nejsou). Mám sice definováno virtual_mailbox_maps, ale minimálně pro aliasy to asi podle tohoto návodu nemůže nic najít (rád bych se mýlil). Aliasy mám v postfix_virtual, tam ale zase není maildir, pouze virtuální adresa pro doručení. Takže mě napadá select nad oběmi tabulkami postfix_virtual a postfix_users (asi něco jako „SELECT postfix_users.maildir FROM postfix_users, postfix_virtual WHERE postfix_virtual.email=’%s’ AND postfix_virtual.destination=postfix_users.email“), to mi ale připadá dost složité (= časově náročný dotaz) a také (asi hlavně) nemám nápad, jak by měl vypadat příslušný .cf soubor (jak uvést názvy 2 tabulek a podmínku?).
        Co jsem přehlédl nebo nedomyslel? Nějaký nápad?
        A když už zmiňuji aliasy k virtuálním účtům, také se mi nepodařilo definovat alias pro celou doménu, např. aby uživatelům kdokoliv@domena.cz byla doručena i pošta adresovaná kdokoliv@mbox.domena.cz nebo kdokoliv@domena.eu. Lze sice definovat všechny aliasy samostatně, zdá se to ale být minimálně dost neprehledné a hodně pracné.
        Díky …

    74. Vlado says:

      maildrop: signal 0x0B som dostaval pokial som mal v tabulke postfix_users nastavenu quotu ako NULL.

      • magnum says:

        vopred sa ospravedlnujem ak nieco zle napisem ale zaciatok tohto textarea je nejako skryte pod lavym menu…

        chcem sa len opytat ci toto ide udelat na slackwareu bez pam… alebo sa ani namam pokusat…

        dik

      • tsunami says:

        Na Slackware lze samozřejmě mailserver také postavit, PAM se nemusí použít, ale konfigurace SW se bude lišit.


        Světlo na konci tunelu může být reflektor protijedoucí lokomotivy.

      • Kaja says:

        Lze do systemu jednoduse implementovat RBL kontrolu. Pokud se nepletu, tat ta ukonci komunikaci se serverem , ktery posila spam jete nez zacne prenast. Snizilo by to znacne zatez serveru (prijmout mal, vyhodnotit ho jako spam a pote ho smazat je prece dot narocne).
        Kaja

      • tsunami says:

        RBL nepoužívám, ale samozřejmě to lze velmi lehce nasadit (stačí použít hledání na google :-) ). Spíš bych doporučil greylisting, dobré zkušenosti mám s postfix-gld.

    75. Izak says:

      No ja pouzivam Sagator-a, ten umi jak Clamav tak Spamassasin, je napsan v pythonu … bo perl je prasarna nenazrana … no hlavne ze Spamassasin je taky v perlu a Clamav tak napul.

      Jinak samozrejme ze Clamavd a Spamassasind, protoze jinak se server uforkuje k smrti. Na strankach Sagatoru doporucuji prejit na antispam napsany v pythonu, protoze perl ma tak o 90% vetsi CPU a pametove naroky a pri velkem zatizeni je to DOS utok

      • Honza says:

        Ahoj, tak jsem uspešně všechno nainstaloval a už si začínám konečně hrát.

        Vytvořel jsem pro sebe takovej malej scriptík kterej dle databaze spočíta aktuální velikost uživatelských schránek
        a uloží ji do DB (schránky načíte z DB z postfix_users) . Tak jsem si říklal že se bude třebas někomu hodit.

        Mějte se fajn a čau.

        #!/usr/bin/perl
        use strict;
        use warnings;
        use File::stat;
        use DBI;
        use Switch;

        #dle db spocita velikosti uzivatelskych schranek
        # je nutne rozsirit DB o jeden sloupec akt_size
        # velikost je zaokrouhlena na cele MB, "du -sm /adresar/z/emailem/uzivatele"
        # SQL pro vytvoření sloupce:
        # ALTER TABLE `postfix_users` ADD `akt_size` TINYTEXT NOT NULL AFTER `quota` ;

        my $filesize;
        my $query_sel;
        my $query_upd;
        my $mysql_username = "login_do_databaze";
        my $mysql_password = "heslo_do_databaze";
        my $mysql_datasource = "dbi:mysql:database=hosting;host=localhost;port=3306";

        # select postfix_users virtual / homedir
        my $connect_sel = DBI->connect( $mysql_datasource,$mysql_username,$mysql_password,{
        RaiseError => 1,
        AutoCommit => 0,
        PrintError => 0
        })
        or die $DBI::errstr;

        # update aktualni velikosti emailu v postfix_users / novy sloupec akt_size
        my $connect_upd = DBI->connect( $mysql_datasource,$mysql_username,$mysql_password,{
        RaiseError => 1,
        AutoCommit => 1,
        PrintError => 0
        })
        or die $DBI::errstr;

        my $sql_sel = "select id,REPLACE(CONCAT(homedir,'/',maildir),'/Maildir/','') as dir from postfix_users";
        $query_sel = $connect_sel->prepare($sql_sel);
        $query_sel->execute();

        while(my ($id,$dir) = $query_sel->fetchrow()){
        $filesize = `du -sm $dir`;
        my @split_data = split(' ',$filesize);
        $query_upd = $connect_upd->prepare("update postfix_users set akt_size = $split_data[0] where id = $id");
        $query_upd->execute();
        }
        $connect_sel->disconnect()
        or die $DBI::errstr;
        $connect_upd->disconnect()
        or die $DBI::errstr;
        exit 0;

      • tsunami says:

        Pěkné, ale nebylo by lepší používat quoty v maildropu? Pak je možné třeba ve webmailu uživateli zobrazovat stav obsazeného místa…

        Neumím si totiž představit, že bych tento skriptík pouštěl na serveru u sebe, kde mám uživatele se stovkami tisíc souborů a několik stovek uživatelů celkově…

    76. Oldster says:

      Zdravím všechny guru,
      potřeboval bych pomoc s nastavením SMTP AUTH. Vše běží na SuSE 9.2, o této distribuci se zatím, myslím, nikdo nezmiňoval, i když si nemyslím, že by měla být tolik odlišná. Bez smtp ověření vše funguje, ověření pro pop3 a imap také ok, pouze smtp vzdoruje, zřejmě problém se sasl. Již několik měsíců čtu různé diskuze a zkouším popsané postupy, nicméně vždy skončím v podstatě stejně:

      Jul 28 09:47:45 host01 postfix/smtpd[13950]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
      Jul 28 09:47:45 host01 postfix/smtpd[13950]: warning: test.office.local[192.168.0.10]: SASL LOGIN authentication failed
      Jul 28 09:47:45 host01 postfix/smtpd[13950]: > test.office.local[192.168.0.10]: 535 Error: authentication failed

      saslauthd mi běží (snad i se správnými parametry):
      # ps -ef| grep saslauthd
      root 13770 1 0 09:36 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd
      root 13785 13770 0 09:36 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd
      root 13786 13770 0 09:36 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd
      root 13787 13770 0 09:36 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd
      root 13788 13770 0 09:36 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -r -m /var/spool/postfix/var/run/saslauthd

      a adresáře také exitují:
      # l /var/spool/postfix/var/run/
      total 0
      drwxr-xr-x 3 root root 80 2006-06-08 15:57 ./
      drwxr-xr-x 3 root root 72 2006-06-08 15:57 ../
      drwxr-xr-x 2 root root 200 2006-07-28 09:36 saslauthd/
      # l /var/run/sasl*
      lrwxrwxrwx 1 root root 36 2006-06-08 15:57 /var/run/saslauthd -> /var/spool/postfix/var/run/saslauthd/

      postfix neběží v chrootu.

      Mám naistalováno (mimo jiné, další balíčky snad se SASL nesouvisí?):
      mysql-4.0.21-4.8
      mysql-client-4.0.21-4
      cyrus-sasl-saslauthd-2.1.19-5
      postfix-2.2.8
      pam_mysql-0.7RC1
      courier-authlib-0.57
      courier-imap-4.0.6

      Konfigurační soubory vypadají takto:

      # cat /etc/sysconfig/saslauthd
      # Authentication mechanism to use by saslauthd.
      # See man 8 saslauthd for available mechanisms.
      #
      START=yes
      PARAMS=“-c -r -m /var/spool/postfix/var/run/saslauthd“
      SASLAUTHD_AUTHMECH=pam
      MECHANISMS=“pam“

      # cat /usr/lib/sasl2/smtpd.conf
      # Soubor smtpd.conf
      pwcheck_method: auxprop saslauthd
      auxprop_plugin: sql
      mech_list: plain login
      allow_plaintext: true
      sql_engine: mysql
      sql_hostnames: localhost
      sql_user: uzivatel
      sql_passwd: heslo
      sql_database: mail
      sql_select: select clear from postfix_users where email=’%u@%r’ and postfix=’Y’
      sql_verbose: yes

      # cat /etc/pam.d/smtp
      # Soubor smtp
      auth sufficient pam_mysql.so user=uzivatel passwd=heslo host=localhost db=mail table=postfix_users usercolumn=email passwdcolumn=clear
      auth sufficient pam_mysql.so user=uzivatel passwd=heslo host=localhost db=mail table=postfix_users usercolumn=email passwdcolumn=crypt crypt=1 md5=y
      auth required pam_deny.so
      account sufficient pam_mysql.so user=uzivatel passwd=heslo host=localhost db=mail table=postfix_users usercolumn=email passwdcolumn=crypt [where=postfix="Y"]
      account required pam_deny.so

      Opravdu již nemám nejmenší nápad, proto prosím o radu či nakopnutí, kudy dál postupovat. Nejraději bych vše snazal a nainstaloval znovu, to ale udělat nemohu – uživatelé by nebyli moc rádi.
      Díky…

    77. tsunami says:

      Rada nebo nakopnutí? Asi bych zkusil zjistit jaký soubor a proč to vlastně nemůže najít (zkusit zapnout nějaký debug? použít strace?)…

    78. tsunami says:

      Greylisting je prima, ale ne vždy jde použít :-(

    79. Jan Mikus says:

      Diky chlape, mel jsem uplne stejnej problem. Pridal jsem radku a uz to funguje tak jak ma. Uz se s tim param 2 dny.

    80. Bilik says:

      Potreboval bych poradit s Postfixem.
      Mam uzivatele definovene pres LDAP ale home ids se jim vytvari az pri prvnim pristupu. Je nejak mozne nastavit, aby se vatvoril i pri prvni pristupu pras imap(Dovecot) a pri prichodu prvni posty? Diky Jiri

    81. tsunami says:

      Uživatelům zakládám domácí adresáře tak, že jim po založení účtu na stroji pošlu email. Maildrop má v pravidlech pravidlo pro kontrolu existence adresáře a v případě potřeby ho yaloží. Email se posílá automaticky z administračního rozhraní, kde zakládám uživatele.

    82. TEo says:

      Zdravím,
      nevíte někdo jak upravit (přeložit do češtiny) posfixovy emailový hlášení který se vrací při nedoručení emailu ?
      Díky

    83. tsunami says:

      Myslím, že byses měl podívat do zdrojáků…

    84. Anonymous says:

      Tak nevím ale asi mi tu někdo odstranil dotaz???

    85. tsunami says:

      Ten někdo jsem byl já.

    86. Anonymous says:

      a pročpak se to stalo?Jestli jsem napsal něco špatně tak se omlouvám ale opravdu s tím potřebuju pomoci.

    87. MilanC says:

      zkompilovat maildrop s podporou mysql?

    88. Zdeněk Burda says:

      Nový maildrop (verze 2) to již nepotřebuje, používá k tomu courier-authlib.

    89. koudis says:

      pardon na zaklade dotazu na mail, jsem to sem zrejme napsal blbe.. melo to byt nikoliv master.cf ale asi jsem mel na mysli main.cf a jde o radek:
      receive_override_options = no_address_mappings

    90. trolo says:

      no, tak ten tvoj riadok no_address_mappings bolo nakopnutie spravnym smerom ;)
      takze podla porekadla prve slovo plati druhe leti z gati ta opravujem:
      nie do main.cf, ale ako si predtym spravne uviedol do master.cf a rovno k AMAVISD-NEW treba pridat takyto riadok
      -o receive_override_options=no_address_mappings

      - tym sme povedali amavisu nech sa vykasle na aliasi a nebude to dorucovat 2x…

      KURNA KONECNE, drbkal som sa stym 3 dni kym som na to prisiel preco mi to zdvojuje :)

      Takze dakujem ti ze si to tu spomenul aj ze si mi odpisoval na majla ;)
      A tiez „SVACAovi“ z tohto prispevku, kde som nasiel spravny zapis:
      http://www.abclinuxu.cz/forum/show/170562

      OK uz len zisti jak sa robi auto-odpoved :)

    91. tsunami says:

      Jestli myslíš auto-odpověď jako třeba informaci o tom že jsi na dovolené a podobně, tak se podívej na program vacation.

    92. igor says:

      Zdravim, prosim pomoc. Jiz nekolik dni se snazime s kolegou rozjet tuhle srandicku na debianu 3.1r1 sarge. A stale narazime na neuveritelnou chybu. Posta jde odesilat ze stroje, jde posilat na lokal, ale pokud chci poslat email z jineho stroje k nam tak podle logu postfixe se stane asi toto:

      Apr 26 17:48:56 xxxxx postfix/smtpd[20413]: connect from relay.xxxxx.net[212.90.165.8]
      Apr 26 17:48:56 xxxxx postfix/smtpd[20413]: NOQUEUE: reject: RCPT from relay.xxxxx.net[212.90.165.8]: 554 : Client host rejected: Access denied; from= to= proto=ESMTP helo=
      Apr 26 17:48:56 xxxxx postfix/smtpd[20413]: disconnect from relay.xxxx.net[212.90.165.8]

      kdyby nekdo vedel cim to muze byt tak prosim poradte…diky predem…

    93. Pingback: Mailserver – Postfix, Dovecot a MySQL » BCVlog

    94. holy says:

      Zdravim Zdenka, toto je nejlepsi manual na postfix s mysql. Vsechno mi podle nej funguje, jen nevim jak udelat presmerovani, ale kopie. ABy se email vlastne naklonoval a prisel na 2 emailove adresy soucasne.

    95. tsunami says:

      Ahoj,

      do `postfix_virtual` vlož:

      email: adresa1@domena
      destination: adresa1@domena, adresa2@kdekoliv

    96. Koudis says:

      nemelo by byt degault uid a gid 5000 ? jako je id uzivatele virtual ?

      CREATE TABLE `postfix_users` (
      `id` int(11) unsigned NOT NULL auto_increment,
      `email` varchar(128) NOT NULL default “,
      `crypt` varchar(128) NOT NULL default “,
      `name` tinytext NOT NULL,
      `uid` int(11) unsigned NOT NULL default ’4001′,
      `gid` int(11) unsigned NOT NULL default ’4001′,
      `homedir` tinytext NOT NULL,
      `maildir` tinytext NOT NULL,
      `quota` tinytext NOT NULL,
      `access` enum(‘Y’,'N’) NOT NULL default ‘Y’,
      `postfix` enum(‘Y’,'N’) NOT NULL default ‘Y’,
      `antispam` enum(‘Y’,'N’) NOT NULL default ‘N’,
      PRIMARY KEY (`id`),
      UNIQUE KEY `email` (`email`)
      ) TYPE=MyISAM AUTO_INCREMENT=4 ;

    97. Anonymní says:

      Možná by to chtělo ten default UID a GID na stejné hodnoty jako má virtual, každopádně já to nastavuju explicitně pro každého uživatele při zakládání, takže je to jedno…

    98. Koudis says:

      Tak jsem to po trech dnech rozchodil :-) Ted uz to jen vsechno pochopit. Chtel jsem si psat vsechny chyby ktery v prubehu udelam.. ale nejak jsem na to zapomel.. Ale aspon jedna z nich..
      kdyz jsem vytvarek strukturu pro maildir, tak jsem ji vytvarel jako root a zapomel pak dat prava uzivateli virtual, ten se k tomu ocividne nemohl dostat.
      Jinak strukura maildir je popsana tu http://cr.yp.to/proto/maildir.html v tom posledni nadpisu.
      Chce to aspon tri slozky pro email koudisek@koudis.net
      /home/virtual/koudis.net/koudisek/cur
      /home/virtual/koudis.net/koudisek/new
      /home/virtual/koudis.net/koudisek/tmp

      Mozna se v necem pletu, ale uz mi to nejak zacina chodit ;-)
      Dik Zdendo.

    99. Anonymní says:

      Pokud si pro založeného uživatele vygeneruješ soubor s filtrem maildropu, tak by se ti měl Maildir založit automaticky při příchodu prvního emailu (proto posílám uvítací email při založení uživatele :-) )

      $ cat /home/virtual/.mailfilters/koudisek\@koudis.net
      
      logfile "/home/virtual/logs/koudisek@koudis.net"
      
      `/usr/bin/test -d /home/virtual/koudis.net/koudisek/Maildir/`
      if ($RETURNCODE == 1)
      {
      `/bin/mkdir -p /home/virtual/koudis.net/koudisek/Maildir/cur`
      `/bin/mkdir -p /home/virtual/koudis.net/koudisek/Maildir/new`
      `/bin/mkdir -p /home/virtual/koudis.net/koudisek/Maildir/tmp`
      }
      
      FROM='koudisek@kodis.net'
      to "/home/virtual/koudis.net/koudisek/Maildir/."
      

      Místo těch mkdirů by šel použít program maildirmake.

    100. N44B says:

      Zdravím, mel bych jede dotaz, když mam nastavene že jako virtual zpracovavam domeu xxx.yyy . mam tam v tabulce transport virtual: . maily pro domenu jedou bez problémů. A když chchi udělat 2 e-mailovky pro domenu, třeba aaa@xxx.yyy a bbb@xxx.yyy a to tak aby vše co pošlu jmenovitě na ně došlo na ty maily a jakykoliv mail co neexistuje, třeba ccc@xxx.yyy aby se mi přeposlal na aaa@xxx.yyy . Jde to? Üplně by stačilo kdyby se dala nastavit priorita zpracovávání , že by měl napřed hledat v userech a až pak ve virtualech. ovšem pak by asi byl problm s timto : http://www.zdenda.com/Mailserver-Postfix-IMAP-Maildrop-MySQL#comment-10 . Nevíte někdo jak to udělat aby to jelo?

    101. Anonymní says:

      Můžeš si udělat víc tabulek, ve kterých se bude postfix ptát v pořadí v jakém je uvedeš do main.cf:

      virtual_maps = mysql:/etc/postfix/mysql-virtual.cf mysql:/etc/postfix/mysql-email.cf mysql:/etc/postfix/mysql-kos.cf

      Struktura tabulky bude stejná jako u postfix_virtual

    102. Anonymní says:

      Heslo pro uživatele nemusíte generovat jenom programem mkpasswd, ale můžete použít i openssl (nebo funkci crypt v php, crypt(„foobar“,’$1$blahblah$’)).

    103. Koudis says:

      Aha, dik. Ja jsem ty filtry zatim naprosto nepochopil co vsechno tam muzu psat… jeste jsem to nehledal.

    104. tsunami says:

      Připsal jsem pár věcí do textu, ještě to není kompletní, protože mi chybí amavis, clamav a spamassassin.

    105. Koudis says:

      vytvoril jsem si takovej malej skript kterej provede cast instalace automaticky.. jestli chces tak ti ho sem muzu poslat.. jeste tam tedaneco dodelam.. je to delany pro debian sarge..

    106. wm says:

      Zdravím,
      lze nějak s tímto nastavením serveru dicílit toho, že budu mít třeba na serveru vloženou doménu test.cz a v ní účet /záznam v postfix_users/ test@test.cz ale aby se pošta, která na tuhle adresu přišla uložila do mailboxu, a zároveň i přeposlala dál? (nejlépe, aniž bych musel použít maildrop?)

      protože tahle sktruktura mi neprošla…

      postfix_transport
      --------------------
      domain | destiantion
      test.cz | virtual:

      postfix_users
      email | ...
      test@test.cz | ...

      postfix_virtual
      email | destination
      test@test.cz | test@jinde.cz

      takhle se ten mail jen preposle, ale do mailboxu test@test.cz ani nedorazí :/

      díky

    107. Anonymní says:

      Do postfix_virtual bych stčil něco jako:

      test@test.cz | test@test.cz, uzivatel@jinde.cz

      Psal jsem to už o kousek dřív v diskuzi.

    108. LaCosta says:

      Chcel som sa opytat ako je to zo spamom konkretne sa-learn pripadne ak zle oznaci treba spravit dalsie konto a obsah adresara davat pre sa-learn ? .. dik za radu

    109. LaCosta says:

      Este jedna vec ta upravena tabulka postfix_user, md-gen hlasi chybu, nakolko sa zmenila struktura tabulky :) keby sa dalo ten skript upravit na tuto novu …

    110. tsunami says:

      Nějak mi uteklo na co se vlastně ptáš… :-)

    111. the.max says:

      kdy bude zpracovanej antivir?

      dik

    112. tsunami says:

      Jakmile to někdo napíše… v todo je ještě hromada dalších věcí a tahle není momentálně vůbec důležitá.

    113. Milan says:

      Ahoj, da se na toto tve reseni nasadit jeste postfixadmin? Myslim nazvy tabulek atd., zetim s tim nemam zkusenost.

    114. Zdeněk Burda says:

      Pokud vím, tak postfixadmin používá jiné tabulky, ale imho by to s trochou úsilím šlo přizpůsobit.

    115. Pepa says:

      Dobrý den. Asi jsem natvrdly a nebo ten linux nemam podchyceny natolik abych zvladl nainstalovat nail server, ale mam problem :-( (.
      Vubec nemam nize uvedene soubory v adresary postfix a nevim jak je tam dostat.

      alias_maps = mysql:/etc/postfix/mysql-aliases.cf
      relocated_maps = mysql:/etc/postfix/mysql-relocated.cf
      transport_maps = mysql:/etc/postfix/mysql-transport.cf
      virtual_maps = mysql:/etc/postfix/mysql-virtual.cf \

      Neporadi mi nekdo jak na to? Balicky bych mel mit snad vsechny nainstalovane. Zadny error mi to nidek nepsalo a debian by sam o sobe zaval, ze mu nejaky balicek chybi. Dekuju.

    116. tsunami says:

      Když nějaké soubory neexistují, tak je třeba je vyrobit…

    117. magnum says:

      to mi je samozrejme jasne ze existuje aj na slackware len by ma zaujimalo ci to pojde s maildrop-om a overovanim voci mysql… bez pam…

    118. rpajik says:

      maildrop v novejsi verzi vyuziva courier-auth, ktera s databazi bez problemu komunikuje ( osobne vyzkouseno s mysql i postgresql ). Takze pam neni treba ( minimalne na dorucovani, pravidla v sql jsem takto nezkousel ).

    119. tsunami says:

      PAM používám pro saslauthd, díky PAMu totiž můžu saslauthd nasměrovat téměř proti jakékoliv DB. Pokud není potřeba aby se uživatelé před přihlášením přihlašovali, tak je možné samozřejmě saslauthd vynechat, pak nebude třeba ani PAM… Kdyby bylo nutné přeci jen nějak uživateli povolit odesílání pošty z nedůvěryhodné IP, je možné to udělat v závislosti na přihlášení k POP3 (hledej pop3 before smtp postfix na google)

    120. Jiri says:

      Dobrý den, nastavil sem podle Vašeho postupu SASL pres pam_mysql na Sarge/stable vsechno chodilo v pohode ale po upgradu na Etch/stable prestal SASL fungovat.

      v /etc/default/saslauthd jsem udel zmenu z

      PARAMS= „-c -r /var/spool/postfix/var/run/saslauthd “ na
      OPTIONS=“-c -m /var/spool/postfix/var/run/saslauthd -r“

      a v /etc/pam.d/smtp jsem umazal [where=postfix="y"] takze ty tet vypada nasledovne

      auth sufficient pam_mysql.so user=jmeno passwd=heslo host=localhost db=postfix table=postfix_users usercolumn=email passwdcolumn=crypt crypt=1 md5=y
      auth required pam_deny.so
      account sufficient pam_mysql.so user=jmeno passwd=heslo host=localhost db=postfix table=postfix_users usercolumn=email passwdcolumn=crypt
      account required pam_deny.so

      testsaslaututhd -u jmeno -p heslo i
      testsaslauthd -u uzivatel@domena -p heslo -f /var/spool/postfix/var/run/saslauthd/mux

      probehne v poradku ale kdyz chci odeslat postu pres thunderbird tak mi vyskoci okno zadejte heslo k uctu .. a pres nej se nedostanu v mail.info jsem nasel tuhle hlasku

      warning: SASL authentication failure: no secret in database
      warning: unknown[IP]: SASL CRAM-MD5 authentication failed: authentication failure
      warning: SASL authentication failure: no secret in database
      warning: unknown[192.168.1.15]: SASL NTLM authentication failed: authentication failure
      warning: SASL authentication failure: Password verification failed
      SASL PLAIN authentication failed: authentication failure
      warning: unknown[192.168.1.15]: SASL LOGIN authentication failed: authentication failure

      nevite nekdo co s tim ?
      diky Jirka

    121. tsunami says:

      Už jsem se s tím někde setkal, zkusím si vzpomenout kde a čím to bylo (mám pocit že to byla nějaké blbost, ale fakt si to nepamatuju přesně).


      Světlo na konci tunelu může být reflektor protijedoucí lokomotivy.

    122. Ashus says:

      Nazdarek, všecko mi už fakčí, jediné co zbývá, je smtp verifikovaná v mysql DB.

      Měl jsem problém se saslauthd, konkrétně testsaslauthd za žádnou cenu nechtěl vrátit OK. Tak jsem se chtěl podělit, že podle mysql logu jsem vypátral, že v /etc/pam.d/smtp chyběla na konci řádku mezera. Dal jsem tam mezeru a \, pak už ten řádek PSPad editor zprava netrimnul.
      A voilá, testsaslauthd se rozjel. Teď ještě zbytek, snad tohle někomu pomůže.

    123. jirka says:

      No tyhle male blbosti jsou nejhorsi , za boha na to nemuzu prijit, zkousel sem i odinstalovat pam-mysql a pouzit libsasl-modules-sql ,ale sasl absolutne nereaguje na zmenu konfigurace v /etc/postfix/sasl/smtpd.conf a to ani po tom co jsem vsechny jeho procesy zabil pres kill -9. Je tu nejaky vypis ktery by mohl alespon naznacit kde muze byt chyba ?

      diky Jirka

    124. Anonymous says:

      No normálně mě jebne. Druhý den se tu s*** jen se secure smtp, a přitom další trapná chyba, řek bych že ta minulá bude souviset: typy konců řádků byly DOS a ne UNIX (\r\n > \n). A já, proč to pořád házelo

      Jun 10 03:00:39 ashw postfix/smtpd[27547]: warning: SASL authentication problem: unknown password verifier
      Jun 10 03:00:39 ashw postfix/smtpd[27547]: warning: SASL authentication failure: Password verification failed

      Určitě by pomohlo, kdyby v Debianí distribuci vytvořili aspoň prázdné SASL soubory.

      Ještě vám doporučím skvělý návod na zkompilování SASL s podporou Courier authdaemona – tj. žádný PAM ani nic extra.
      http://linox.be/index.php/2005/07/25/60

    125. Honza says:

      Ahojky, tak jsem to možná blbě pochopil a script psal zcela zbytečně. Ještě sem hledal všude možně na internetu a nic jsem nenašel.

      Jak zprovoznit quotu je celkem logické (je to zde popsané), ale dejme tomu že máme nějaké administratorské rozhraní kde mám seznam všech emailu od dané domeny a chci u nich zobrazovat obsazený prostor… jak to tedy mám udělat když né tak jak jsem to udělal já přes ten script.

      Každopádně já ten script pouštím každou hodinu z cronu a zatím to frčí pěkně, o moc emailu tam zatím nemám a beží to jenom chviličku….

      Děkuji Honza.

    126. DD says:

      No zpusobu jak zjistit quotu pro uzivatele mas nekolik. Pokud pouzivas quoty pres maildrop tak v kazdem Maildiru uzivatele ktery ma nastevenou quotu existuje soubor maildirsize v kterem nalezenes jak nastavenou quotu tak informace k spocitani aktualne vyuzite quoty (velikosti mailu, jejich pocet).
      Pripadne se muzes podivat do pluginu pro squirrelmail quota_usage kterej zobrazuje vyuziti nastavene quoty, a pouziva k tomu dotaz primo na imap server.

    127. Ashus says:

      Strucny navod, jak udelat vyjimku z domenoveho kose (tj. odmitnout urciteho prijemce):

      Upravime databazi, tabulku users – pridame pole accept_rule typu ENUM („OK“,“REJECT“), defaultne „OK“.

      Upravime soubor mysql-client.cf: zmenime hodnotu u select_field na accept_rule (bez uvozovek).

      Do databaze users pridame napr. spamovaci_cil@domena.tld, bez hesla, postfix=N, access=N, accept_rule = „REJECT“.

      Otestujeme.

    128. DD says:

      A jakej admin pro spravu tohoto konkretniho setupu pouzivas ty ?

    129. tsunami says:

      Mám vlastní program sadu skriptů, které používám z CLI a pak mám jednoduché rozhraní napsané v PHP. Dále mám ještě napsaný resource adapter do Sun Java Identity Manageru, ale to mám zatím jen tak na hraní :-)

    130. Pavel says:

      Dobrý den, chtěl bych se zeptat na problém s postfixem.. Mám ho tedy na stroji kde je distribuce Fedora.. A problém je v tom že mi postif nepošle nic co jde na cokoliv@t-email.cz a cokoliv@vodafonemail.cz. Na seznam nebo na jakykoliv jiny email to jde v pohode.. Když se snažím poslat email na vodafone.. tak mi to hodí hlášku:
      host e2sgw01.vodafone.cz[217.77.161.168] said: 450 : Sender address rejected: Domain not found (in reply to RCPT TO command)
      když to pošlu na t-email tak to hlasku nehodi ale posta vubec nedorazi..
      nevěděl byste kde by mohl být problém?

    131. oik says:

      Ta hláška znamená, že tvůj Postfix má neexistující doménu v direktivě ‘mailname’ – zkus se přihlásit telnetem na portu 25 na localhost: např:
      root@oik2:/home/admin/oik# telnet localhost 25
      Trying 127.0.0.1…
      Connected to localhost.
      Escape character is ‘^]’.
      220 oik2.lan.digisvet.cz ESMTP

      takový mail by byl taky odmítnutý – doména lan.digisvet.cz je jen provozní – tj. pro internet neexistuje:

      Nov 25 16:04:20 oik2 postfix/smtp[31823]: 41193BCAB: to=, relay=e2sgw01.vodafone.cz[217.77.161.168]:25, delay=0.44, delays=0.07/0.01/0.31/0.05, dsn=4.0.0, status=deferred (host e2sgw01.vodafone.cz[217.77.161.168] said: 450 : Sender address rejected: Domain not found (in reply to RCPT TO command))

      Dál je potřeba si dávat pozor, aby souhlasil DNS A záznam a PTR záznam s direktivou ‘mailname’

    132. kvalitka says:

      zdravim, nefunguje mi ten skript md-gen. Mohli by ste poradit co s tym?
      tu je vypis:
      Name „main::DIR_LOG“ used only once: possible typo at ./md-gen line 14.
      print() on closed filehandle VYSTUP at ./md-gen line 119.

    133. tsunami says:

      Pokud nepotřebuješ generovat pravidla pro Maildrop z MySQL databáze, nepoužívej tento skript. Lepší je trochu upravit konfiguraci postfixu a Maildropu tak aby si se vším vystačili sami: http://www.zdenda.com/maildrop-automaticke-vytvareni-adresaru

    134. klopta says:

      Ahoj,
      pouzivam jiz nejaky ten patek tohle reseni (dekuju za nej) a ted, kdyz uz je na serveru vetsi zatez (desetitisice mailu za den) se zvysuje zatez databaze. Vsiml jsem si velkeho poctu sleep processu ve vypisu databaze (viz priloha) – neni to prave ono? Pochopil jsem to tak, ze kazdy mail je overovan proti db – otevre se spojeni a po overeni jiz nedojde k jeho uzavreni. Podle http://www.postfix.org/mysql_table.5.html se spojeni samo zavre po 1 minute:
      „The connections are auto-matically closed after being idle for about 1 minute, and are re-opened as necessary.“ Neni to zbytecne plytvani prostredky (ram)? Nemohlo by se spojeni ihned ukoncovat? Nebo je to v poradku?

      priloha:

      mysql> show processlist;
      +---------+---------+-----------------------------+---------+---------+------+-------+------------------+
      | Id | User | Host | db | Command | Time | State | Info |
      +---------+---------+-----------------------------+---------+---------+------+-------+------------------+
      | 2112012 | postfix | localhost | postfix | Sleep | 32 | | NULL |
      | 2240500 | root | localhost | NULL | Query | 0 | NULL | show processlist |
      | 2240502 | postfix | localhost.localdomain:40874 | postfix | Sleep | 26 | | NULL |
      | 2240503 | postfix | localhost.localdomain:40875 | postfix | Sleep | 26 | | NULL |
      | 2240504 | postfix | localhost.localdomain:40876 | postfix | Sleep | 26 | | NULL |
      | 2240505 | postfix | localhost.localdomain:40877 | postfix | Sleep | 26 | | NULL |
      | 2240506 | postfix | localhost.localdomain:40878 | postfix | Sleep | 26 | | NULL |
      | 2240507 | postfix | localhost.localdomain:40879 | postfix | Sleep | 26 | | NULL |
      | 2240513 | postfix | localhost.localdomain:40885 | postfix | Sleep | 26 | | NULL |
      | 2240514 | postfix | localhost.localdomain:40886 | postfix | Sleep | 26 | | NULL |
      | 2240515 | postfix | localhost.localdomain:40887 | postfix | Sleep | 26 | | NULL |
      | 2240517 | postfix | localhost.localdomain:40888 | postfix | Sleep | 26 | | NULL |
      | 2240525 | postfix | localhost.localdomain:40890 | postfix | Sleep | 41 | | NULL |
      | 2240526 | postfix | localhost.localdomain:40891 | postfix | Sleep | 41 | | NULL |
      | 2240527 | postfix | localhost.localdomain:40892 | postfix | Sleep | 41 | | NULL |
      | 2240528 | postfix | localhost.localdomain:40893 | postfix | Sleep | 41 | | NULL |
      | 2240529 | postfix | localhost.localdomain:40894 | postfix | Sleep | 41 | | NULL |
      +---------+---------+-----------------------------+---------+---------+------+-------+------------------+
      17 rows in set (0.00 sec)

    135. Indy says:

      Mam podobny problem, na stroji kde bezi postfix instalovany podle tohoto manualu ( a bezi dobre :-) ), dochazi k pretezovani db diky spojenim z postfixu. Nejde optimalizovat komunikaci postfix – mysql ? A neslo by pro ni pouzit jiny modul nez nez binarku kterou to standardne pouziva ?

    136. tsunami says:

      co použít v konfiguraci postfixu proxymap? (http://www.postfix.org/proxymap.8.html)

    137. tomas says:

      ahoj, diky za navod, uz se s tim patlam pekne dlouho a mam chut vzit kladivo nebo prejit na debian, ale vzdycky me to prejde a pokracuju
      mam Fedoru 7 mozna uz je to prepracovanim mozna jsem uplne blbej nebo treba jenom erubce na slunku.
      Za boha nemuzu najit konfiguraky
      viz.
      pro novější verze maildropu nemusíte provádět překompilvání s podporou MySQL (ono to ani nejde). Konfigurace maildropu byla přesunuta do authdaemona (takže používá stejný konfigurák pro připojení k MySQL jako courier-imap)
      kam mam teda nacpat ?
      verze maildropa je
      Name : maildrop
      Arch : i386
      Version: 2.0.2
      Release: 1.4ES
      Size : 863 k
      kam mam teda nacpat toto ?
      hostname localhost
      port 3306
      database postfix
      dbuser login-maildropu-do-MySQL
      dbpw heslo-maildropu-do-MySQL
      dbtable postfix_users
      default_uidnumber 5000
      default_gidnumber 5000
      uid_field email
      uidnumber_field uid
      gidnumber_field gid
      maildir_field maildir
      homedirectory_field homedir
      quota_field quota
      mailstatus_field postfix
      where_clause and postfix=’y’

      Nevite kde jsou soubory?
      authdaemonrc
      authmysqlrc
      protoze ja rozhodne ne. pripadne kde je vytvorit?

      taky predpokladam ze soubory
      /usr/lib/courier-imap/etc/pop3d a imapd jsou opravdy ty kam zapsat zmeny z navodu
      protoze tu mam jeste pop3c.cnf a po3d.dist

      Je mi jasne ze jsou to hloupe otazky ale za kazdou pomoc diky

    138. linux.tester says:

      pro novější verze maildropu nemusíte provádět překompilvání s podporou MySQL (ono to ani nejde). Konfigurace maildropu byla přesunuta do authdaemona (takže používá stejný konfigurák pro připojení k MySQL jako courier-imap)
      kam mam teda nacpat ?

      Tak to by me take zajimalo kam to dat :D , pokud nekdo vi, prosim at odpovi, diky

    139. tsunami says:

      Možná záleží na tom, jak je authdaemon zkompilovaný, ale hledal bych něco jako /etc/authlib/authdaemonrc a /etc/authlib/authmysqlrc

      v authdaemonrc nastav authmodulelist=“authmysql“

      a v authmysqlrc něco jako:

      MYSQL_CRYPT_PWFIELD password
      MYSQL_DATABASE postfix
      MYSQL_GID_FIELD gid
      MYSQL_HOME_FIELD homedir
      MYSQL_LOGIN_FIELD username
      MYSQL_NAME_FIELD name
      MYSQL_OPT 0
      MYSQL_PASSWORD HESLO
      MYSQL_PORT 0
      MYSQL_QUOTA_FIELD concat(quota,’S')
      MYSQL_SERVER localhost
      MYSQL_UID_FIELD uid
      MYSQL_USERNAME postfix
      MYSQL_USER_TABLE mailbox
      MYSQL_WHERE_CLAUSE active=’1′

      (tohle je platné pro použití s postfixadminem, tuším)

    140. jakub says:

      zdravim, daval sem na server postfix,podle trochu jineho navodu..bez sql databaze.
      V logu mi to haze jednu chybu…maildir access prolbem for UID/GID=1009/100
      a u toho pak cestu do adresare uzivatele kam se mel mail ulozit.
      A ze bych mel zkusit vytvorit maildirs in advance.
      Hadam ze je chyba nekde v pravech.Mohl by jste mi prosim nekdo poradit komu a jaka prava?Uid-je uzivatel Vmail a 100 je skupina users,moc dekuji!

    141. Jakub says:

      nemel sem prava na slozkach pro mail..

    142. Meatfly says:

      Zdravím, především bych chtěl poděkovat za tento návod/článek je opravdu super hodně mi spolu s man, google atd pomohl
      měl jsem zajímavý ukol a to udělat kopie mezi dva společníky naší firmy.
      samozřejmě v maildropu cc“!mail2@domena.tld“ což ale oproti sobě dvě schránky mít nemůžou logicky email se neustale kopíruje.
      řešení je poměrně prosté do emailu vložíme značku že byl email přeposlán.

      if (!/^Resent-From: .*kam_adresa@dom.tld.*/)
      {
      xfilter „reformail -A ‘Resent-From: tato_adresa@domena.tld‘“
      cc „!kam_adresa@formsoft.cz“
      }

      třeba to někomu pomůže. ale řeší to pouze kopie o proti sobě jak by to bylo např mezi třema schránkama nevím.

    143. Petr says:

      Jak řešíte aktualizace takto upraveného systému ?
      Při standartním použití yum jsem dlouho dohledával a opravoval
      „napáchané“ změny oproti funkční konfiguraci
      nic kromě uvedení výjimek a kompliace mě nanapadá
      Diky za nápady

      Petr

    144. tsunami says:

      Na Debianu takoveto problemy neresim, tam je aktualizace bezbolestna. Na RHEL je to nekdy opruz, ale take nic tragickeho, mozna to je pro me jednoduche protoze jsem mailserveru nainstaloval docela dost a presne vim kde co ma byt…

    145. diego says:

      Zkoušel jste někdo kombinaci postfix + maildrop + ldap? Já nemohu stále donutit maildrop 2.0.2 ke komunikaci s LDAP. Myslel jsem, že si jej zkompiluji s podporou LDAP, ale nejde mi to, už při ./configure se to zacyklí a nepřišel jsem na to proč. Napadlo mne, jestli už třeba deb balíček v této verzi už nemá podporu ldap v sobě…

    146. HF says:

      Dobry den, Vas navod je primo sqvelej.. kobouk dolu.. jen mam nejakej trabl se SASL2, hledal jsem vsude mozne od seznamu po google :) a nic. Mam system Ubuntu 7.10 GG, a nemohu podle vaseho navodu pohnout s konfiguraci sasl. protoze jej nemam nainstalovany a vubec nemohu najit jak jej nainstalovat po cca 3 dnech hledani mam pocit, ze by tam mel byt nainstalovany automaticky jako nejaka balickova zavislost protoze se mi nikde nepodarilo najit navod na instalaci.V /etc/postfix/sasl nemam nic jen prazdny adr. a v /etc/default/nemam smtpd.conf.. Prosim o nakopnuti ci jake balicky doinstalovat.. Mnohokrat dekuji.. Jan Elbl(pripadne rad zaplatim za konzultaci..)Jen at mi to frci..

    147. tsunami says:

      Je ten maildrop v této konfiguraci skutečně nutný? Zkušenost s tím nemám, v kombinaci postfix+ldap používám jako MDA dovecot, který zároveň obstarává imap/pop, filtrování to také umí – v dovecotu fungují sieve filtry.

    148. tsunami says:

      pálím od boku: cyrus-sasl2 (případně nějaký podobný název)? Na ubuntu jsem to poslední dobou nikde neinstaloval, tak si to nepamatuji… Pokud nějaký konfigurační soubor neexistuje, tak je někdy nutné ho prostě vytvořit.

    149. toxin says:

      Ahoj. MMám vytvořený účet řekněme ucet@domena.cz a chci, aby vše co přijde na tento účet, aby se poslalo i na adresu ucet2@domena2.cz. Nechci ho přeposlat. Chci aby byl jak v jedné tak v druhé stránce. Nastavení z virtual tabulky se použije pouze v případě, že uživatel neexistuje v tabulce users. Pokud existuje tak se tabulka virtual uplně ignoruje. Nevíte jak na to?

    150. Martin Kupec says:

      Já mám Debian a pokud si stáhnu všecky příslušné balíky, tak tyhle konfigurační soubory naskáčou normálně do /etc/courier/.

    151. Anonymous says:

      Ja to delam trochu prasacky, ale zato o to jednoduseji a prehledneji…
      Klasicky SASL overi uzivatel pres LDAP (bez definece i ci uprav schematu) a zalozi mailbox. Uzivatel jsi pak postu vybere pres pop3 ci imap klienta.
      Pokud to ma byt system pro vice domen, pak uz tento zaklad neni ulpne dobry. Pres virtualni aliasove domeny je to prasarna :-)
      Pri velkem mnozstvi uzivatelu udrzovat mapu je slozite….

      Ale zalezi na tom, k cemu ma ten postovni server slouzit. Pokud nekdo chce provozovat kvalistni e-mailovy hosting, musi jit pres sql, nebo lepe pres LDAP. PDAP je z meho pohledu vice flexibilni.

    152. tsunami says:

      Nějak jsem komentář nepochopil. Co složitě, kde složitě? Nechtělo by si to komentář nejdřív po sobě přečíst, jestli mu vůbec bude někdo rozumět?

      LDAP je někdy dobré řešení, ale také má svá omezení(jako všechny technologie). Jinak toto howto je mírně zastaralé, princip je OK, ale změnilo se pár věcí, takže chystám další verzi návodu a tentokrát s LDAPem: http://www.zdenda.com/aktualizace-navodu-na-mailserver-s-virtualnimi-uzivateli-sbiram-pozadavky

    153. Anonymous says:

      Pouze jsem tich chtel rici, ze pokud nekdo jeste jako ja posftix vuci sql jiz drive „neobratil“, tak mu to muze prijit prilis slozite. Osobne nejsem vubec zastancem navodu typu copy-cut. Potrebuji pochopit co a proc se to deje…. Jinak urcite jeden z nejlepe napsanych navodu. Pouze jestli mohu vladam odkaz na navod pro ty, kteri se nejprve snazi s timto tematem seznamit a chteji si vyzkouset nejprve jednodussi konfiguraci(debian): http://workaround.org/articles/ispmail-etch/

    154. Anonymous says:

      Zdravím,

      vidím že tu jste všichni profíci a tak byste mně mohli správně nasměrovat.
      Ve firmě mně tlačí do toho rozjet egroupware. V návodu jsem narazil na nutnost instalace SMTP serveru (nejlépe Postfix) a client IMAP serveru (nejlépe Cyrus) pro funkčnost pošty.

      Začal jsem tedy hledat a narazil na tohle vlákno, ze kterého nabývám dojem že Postfix + Cyrus už je trochu někde jinde než jsem si myslel :-)

      Ve firmě máme zatím maily na koupeném hostingu a stahujeme si je pop3. Moje představa byla taková, že toto nechám profíkům, a tedy vlastní schránky na hostingu zůstanou, a server si bude jednotlivé schránky stahovat k sobě pop3 (s tím že je 14dní ještě nechá i na hostingu) a klienti kanceláře už se budou IMAPem připojovat k serveru v kanceláři (prostřednictvím egroupware, případě se stale budou v krizi schopni připojit pop3 na hosting).

      Jsem úplně mimo ? Nebo lze Postfix a Cyrus nakonfigurovat i takto jednoduše ? Je mi jasné že smtp budu pro odesílání pošty potřebovat, ale rozhodně nechcí mít DNS nasměrován na náš server a odchytávat si maily sám.

      Vím že si teď všichni řeknete že mám jít na google a samo to plánuju, jen mně možná někdo trochu líp nasměrujete, abych se v tom úplně neztratil :-)

      Díky

    155. tsunami says:

      Postfix ani Cyrus nemají s tím, že budete primárně doručovat poštu k providerovi a stahovat jí přes pop3 nic společného. Je to celkem běžná situace. Stahování pošty řeším fetchmailem, který email stáhne a předá lokálnímu postfixu a ten se postará o jeho další zpracování (např prohnání nějakým filtrem nebo rovnou předá do schránky).

      Odesílání pošty lze řešit také tak, že se nastavý relay_host v postfixu u vás na serveru tak aby postfix předával poštu providerovi a ten se o doručení postará sám…

    156. Anonymous says:

      No koukám že v tom mám trochu hokej.
      Myslel jsem že postfix je jen smtp, který předá příchozí email dál a nestará se o schránky, a že vlastní management emailových schránek dělá Cyrus a zprostředkovává k nim přístup klientům přes IMAP.
      V této mystifikaci jsem pokračoval dále a myslel si, že Cyrus umí zpracovat pouze maily, které dorazí přímo na něj a že mu je tedy postfix předává. Tudíž mi pak nebylo jasné jak maily k sobě dostanu, když jsem předpokládál že postfix je rozhodně přes POP3 stáhnout neumí.
      Takže totalně mimo. Omlouvám se …

      Nějaký odkazík na srozumitelné info kolem této problematiky by nebyl ? Ono mi z google padají jen věci, kde už profíci používají názvy programů jako hesla v textu, a těžko se pak představuje co který program vlastně dělá :-(

      Takže předpokládám že tedy řešením je zprovoznit ještě fetchmail, který předpokládám bude stahovat maily ze všech možných emailových schránek přes pop3 (bude muset mít k dispozici veškeré informace včetně hesel). Ten bude všechny maily předávat postfixu, který je znovu sám roztřídí do nadefinovaných schránek, vlastně už bez info odkud je fetchmail stáhl (tzn. když budu fetchmailem stahovat maily z nějaký schránky, kterou pak na serveru nebudu mít, tak se maily zahodí !?). A Cyrus je jen nadstavba nad postfix, která umožňuje ke schránkám postfixu přístup přes IMAP.

      Nebo jsem zase totálně mimo ?

    157. tsunami says:

      Ano, fetchmail musí mít informace o schránkách, ze kterých má stahovat poštu. Otázka zní, jestli by nebylo lepší aby provider rovnou předával poštu na váš server smtp serveru (postfixu)

      Fetchmail nemusí předávat poštu postfixu, ale může ji dávat rovnou nějakému MDA (procmail, maildrop, dovecot-lda…) který jí zatřídí do schránek. Záleží na požadavovaných funkcích. Používám předávání postfixu proto, že používám funkce které umí líp postfix než jakýkoliv MDA.

      K cyrusu jako takovému moc neporadím, nepoužívám ho. Poslední dobou všude nasazuji Dovecot, který mi slouží jako autorizační server pro postfix (ověření uživatele při odesílání pošty), imap a pop3 server a také jako MDA pro doručování pošty uživatelům do schránek.

    158. Pet says:

      Dobrý den,

      bohužel spravuji malý firemní server a budu muset přitvrdit v kontrolách na korektnost odesílatele.

      Rád bych při tom při každém odmítnutí mailu v odmítací hlášce měl url na web na formulář, kde nás dotyčný může kontaktovat.
      Něco jako tohle od googlu, ale pro všechny odmítnutí:
      550-5.1.1 The email account that you tried to reach does not exist. Please
      550-5.1.1 try double-checking the recipient’s email address for typos
      550-5.1.1 or unnecessary spaces. Learn more at
      550 5.1.1 http://mail.google.com/support/bin/answer.py?answer=6596

      Jde to vůbec?
      Díky ;-)

    159. Pet says:

      A přikládám patch – předpokládám, že zprávy si v něm už každý napíše sám ;-)

      diff -Naur postfix-2.4.6/src/smtpd/smtpd_chat.c postfix-2.4.6_pet/src/smtpd/smtpd_chat.c
      — postfix-2.4.6/src/smtpd/smtpd_chat.c 2006-07-10 20:24:52.000000000 +0000
      +++ postfix-2.4.6_pet/src/smtpd/smtpd_chat.c 2008-08-22 12:59:00.000000000 +0000
      @@ -142,6 +142,9 @@
      va_list ap;
      int delay = 0;

      + VSTRING *petbuf = NULL;
      + const char *petmessage = „Tohle je zprava, kterou to posila po kazde 5xx nebo 4xx chybe“;
      +
      va_start(ap, format);
      vstring_vsprintf(state->buffer, format, ap);
      va_end(ap);
      @@ -151,6 +154,24 @@
      if (STR(state->buffer)[4] == ’5′)
      STR(state->buffer)[4] = ’4′;
      }
      + /*
      + * Check if message is 5xx or 4xx and prepare aditional message
      + */
      + if (STR(state->buffer)[0] == ’5′ || STR(state->buffer)[0] == ’4′) {
      + unsigned char *cp;
      + int n = 3;
      + if (STR(state->buffer)[0] == STR(state->buffer)[4])
      + n = 5;
      + for (cp = ((unsigned char *) STR(state->buffer)) + n; cp < (unsigned char *) vstring_end(state->buffer); cp++)
      + if (*cp == ‘ ‘)
      + break;
      + if (*cp == ‘ ‘) {
      + petbuf = vstring_alloc(100);
      + vstring_strncpy(petbuf, (unsigned char *) STR(state->buffer), (cp – (unsigned char *) STR(state->buffer)) + 1);
      + vstring_strcat(petbuf, petmessage);
      + }
      + }
      +
      smtp_chat_append(state, „Out: „);

      if (msg_verbose)
      @@ -166,6 +187,14 @@
      smtp_fputs(STR(state->buffer), LEN(state->buffer), state->client);

      /*
      + * Use the aditional message
      + */
      + if( petbuf ) {
      + smtp_fputs(STR(petbuf), LEN(petbuf), state->client);
      + vstring_free(petbuf);
      + }
      +
      + /*
      * Flush unsent output if no I/O happened for a while. This avoids
      * timeouts with pipelined SMTP sessions that have lots of server-side
      * delays (tarpit delays or DNS lookups for UCE restrictions).

    160. the.max says:

      AAAhoj

      Uz nekolik hodin se snazim vygooglit jak docilit toho, aby se mi z tabulky postfix_aliases spoustel skript. Pokud to mam v /etc/aliases tak to funguje. Jde mi konkretne o toto:

      platby_rb: „|php /home/virtual/skripty/rb_banka.php“

      Jak toto dostat do postfix_aliases?

    161. tsunami says:

      No já tyhle opičárny spouštím z filtru MDA (maildropu) nebo mám nadefinovaný vlastní transport a v něm to zpracovávám.

    162. the.max says:

      To me taky napadlo to dat rovnou do filtru, ale nikde jsem nenasel nejakej popis jak se s temi filtry pracuje, takze pokud by jsi byl od ty dobroty a dal sem nejaky priklad, byl bych ti vdecny;-)

    163. tsunami says:

      Myslíš něco takovéhoto?

      if (! /^X-Spam-Flag:.*YES/)
      {
        exception {
          cc "| /usr/local/bin/skript"
        }
      }
      

      Skriptu pošlu data na stdin, takže ten je může snadno přijmout. Také mu lze přidávat nějaké parametry, které můžou být dokonce i proměnné v maildropím filtru: (cc „| /usr/local/bin/skript $LOGNAME“)

    164. Anonymous says:

      jj, presne to je ono, diky:-)

    165. Gogo says:

      nejsem priliz zbehly v reseni problemu na linuxu. Mam nainstalovany pocitac s linuxem gentoo a kdyz uz bezi rikal jsem si udelam si postovni server instalaci jsem vicemene zvladl podle ruznych postupu a posta zda se funguje tak jsem chtel provest jeste virtualni domeny a tady jsem narazil a nejsem schopen s tim hnout. pri pokusu o doruceni mi to stale v logu pise viz predmet :(
      Konfigurace je postfix sasl courier amavis clam spamassassin to cele castece pres myslq (jeste se mi nepovedlo presvedcit at bere uzivatele z mysql a ne ze systemu :) )

      predpokladam ze problem je s tim kdo se pokousi poustet maildrop kdyz to pustim z shellu maildorp -d user@domena jako root ak to zaden problem nenapise kdyz se ovsem snazim spustit to jako jakykoliv jiny uzivatel vzdy je vysledek stejny — You are not trusted user

      maildrop unix – n n – – pipe
      flags=R user=virtual:virtual argv=/usr/bin/maildrop -V1 -d ${recipient}

      jako user jsme zkousel vsechno co mne napadlo vysledek ovsem stale stejny

      diky moc za jakoukoliv radu. Nasel jsem kuse zminky o tom ze te treba maildrop instalovat s nejakou volbou -enable trusted nebo tak neco ovsem ja mam maildorp instalovat pres emerge a tam se mi zadne parametry zadat nepovedlo.

      Diky moc za jakoukoliv radu.

    166. gogo says:

      nainstaloval jsem maildrop rucne tak ted uz to neprudi tou hlaskou You are not truster user ted mi to pro zmenu nejde vubec pise to porad authentication error input output error a nejde se mi prihlasit na zaden port :( asi jsem na to moc blby :(

    167. tsunami says:

      Vyprdni se na maildrop a použij dovecot. Má rozumnou dokumentaci a imho funguje líp než maildrop. Také mi připadá, že má lepší funkce. A je víc konfigurovatelný.

    168. Gogo says:

      porad zapasim s postou a zda se ze nejak prohravam pokousim se rozchodit overovani pres pam_mysql
      bohuzel porad mi to pise :
      saslauthd[16892]:pam_mysql – SELECT returned no result.
      saslauthd[16892]: pam_mysql – SELECT returned no result.
      DEBUG: auth_pam: pam_authenticate failed: Permission denied

      hledal jsem nekolik hodin na internetu ale proste jsme nenasel duvod proc by to melo psat tady http://www.abclinuxu.cz/poradna/linux/show/194485 jsem nasel nejakej konfig zkousel jsem to i takhle nastavit ale zjevne je problem nekde jinde nez v nastaveni pam.d

      Dekuji moc za jakoukoliv radu

    169. Anonymous says:

      Toto uz jsem nepochopil vubec :(

      # testsaslauthd -u user -p heslo
      0: OK „Success.“
      # testsaslauthd -u user@domena.xx -p heslo
      0: NO „authentication failed“
      # testsaslauthd -u user@domena.xx -p heslo -s imap
      0: NO „authentication failed“
      # testsaslauthd -u user -p heslo -s imap
      0: OK „Success.“
      # testsaslauthd -u user -p heslo -s smtp
      0: NO „authentication failed“
      # testsaslauthd -u user@domena.xx -p heslo -s smtp
      0: OK „Success.“
      # testsaslauthd -u user@domena.xx -p heslo -s imap
      0: NO „authentication failed“
      # testsaslauthd -u user -p heslo -s imap
      0: OK „Success.“

    170. tsunami says:

      No kdybys použil dovecot, tak můžeš krom maildropu vyhodit i ten saslauthd a pam_mysql, nechceš vážně dovecot zkusit?

      Nemůžu nějak víc poradit, protože neznám konfiguraci kterou používáš u saslauthd a pamu

    171. filo says:

      Především Vás musíl pochválit za skvělý návod, ovšem nedošel jsem ke zdárnému konci…pokud zkusím na vytvořenou schránku odeslat mail ze vzdáleného serveru (např. seznam), mail se vrátí s chybou, že nemohl být doručen. Prozkoumal jsem proto logy a objevil jsem následující chybu:
      Oct 28 00:06:39 server postfix/pipe[17566]: fatal: get_service_attr: unknown username: vmail

      přitom jsem vytvořil uživatele virtual ve složce home s chmod 700

      a v tabulce postfix_users jsem do UID i GID zadal 5000

      Vůbec nechápu kde se vzalo vmail

      Děkuji předem za pomoc

    172. tsunami says:

      Zkusil bych spustit „grep vmail -r /etc/postfix“, to by mohlo objasnit kde se vzal vmail. Nejpravděpodobnější je, že u konfigurace maildropu v master.cf je uveden jako uživatel pod kterým se má provádět doručení.

    173. lukazi says:

      Zdravim,

      mam nasledujici dotaz. Postupoval jsem v ramci moznosti dle tohoto navodu.
      Kdyz poslu email na spravny@mojedomena.cz mail se normalne doruci.
      Kdyz poslu email na nesmysl@mojedomena.cz mail se vrati odesilateli od meho serveru

      priklad
      webmail postfix/virtual[32051]: B9527FBBBE: to=, relay=virtual, delay=0, status=bounced (unknown user: „sdasda@mojedomena.cz“)

      Ja bych potreboval, aby byl email klientovy odmitnut (550) behem spojeni po zadani ‘rcpt to’: Vypada to, jako kdyz behem spojeni nekontroluje, zda schranka existuje.

      Dekuji za pomoc

      ————————————————————————————
      alias_maps = mysql:/etc/postfix/mysql-aliases.cf
      relocated_maps = mysql:/etc/postfix/mysql-relocated.cf
      transport_maps = mysql:/etc/postfix/mysql-transport.cf
      virtual_maps = mysql:/etc/postfix/mysql-virtual.cf mysql:/etc/postfix/mysql-email.cf mysql:/etc/postfix/mysql-trash.cf hash:/etc/postfix/virtual

      virtual_mailbox_base = /home/virtual
      virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-maps.cf
      virtual_uid_maps = mysql:/etc/postfix/mysql-virtual-uid.cf
      virtual_gid_maps = mysql:/etc/postfix/mysql-virtual-gid.cf

      smtpd_require_helo = yes

      smtpd_recipient_restrictions = reject_non_fqdn_recipient, reject_non_fqdn_sender, reject_rbl_client sbl.spamhaus.org, reject_rbl_client dnsbl.njabl.org, reject_rbl_client blackholes.wirehub.net, reject_rhsbl_sender dsn.rfc-ignorant.org, permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-recipient.cf, check_relay_domains, reject

      smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-client.cf, reject_rhsbl_sender dsn.rfc-ignorant.org, reject_rbl_client sbl.spamhaus.org, reject_rbl_client dnsbl.njabl.org, reject_rbl_client blackholes.wirehub.net, permit_sasl_authenticated, permit

      smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-sender.cf, permit_sasl_authenticated, permit_mynetworks, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_sender_login_mismatch, permit

      header_checks = pcre:/etc/postfix/header_checks
      ———————————————————————————–

    174. Honza says:

      Zdravím.

      Hledám na internetu už jak dlouho, ale pořád nemůžu přijít na jedná základní věc.
      Potřebuji omezit posílání na jenden email jen z některých adres.

      Příklad:
      Email skupina@xxxxxx.cz bude prijimat emaily jen z adresy admin@xxxxxx.cz.

      Nemůžete mně někdo nasměrovat?
      H.

    175. Milamber says:

      Ahoj
      dochází mi velké množství zpráv (z venku) na neexitující ůčty, které se pak snaží maildrop rozdělit.
      Lze nějak nastavit aby si postfix nebo třeba maildrop oveřil, v databázi jestli takový účet nebo alias existuje a když ne tak ho zahodit. Snad se ptám dobře, ale nevím jak jinak to vysvětlit.

      Děkuji za případné rady.

    Napsat komentář

    Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

    *

    Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>