» »

[Ubuntu server] mail poslan iz serverja zazna kot vsiljeno pošto

[Ubuntu server] mail poslan iz serverja zazna kot vsiljeno pošto

1
2
»

shorvat ::

jih bom zelo vesel. email: smrkc.krep@gmail.com

preem ::

huh, dobr find.

jaz rajši uporabljam complete colaboration suite, ki sliši na ime Zimbra kot main mail strežnik, in zadeva deluje odlično, poskrbi za te stvari sama. Tako, da predlagam, če rabiš za več accountov in zraven še pop3/imap dostop, ter koledar in podobne stvari, da si jo namestiš.

drgač je pa za izi pošiljanje aktivacijskih mailov in podobno čist kul simple postfix ja - čeprav v tem primeru, bi jaz naštimal kot relay in pošiljal prek siolovga SMTPja, kokr da bi sam se s tem ukvarjal.

BlueRunner ::

jih bom zelo vesel. email: smrkc.krep@gmail.com

Bom kar tukaj... če bo kdo videl kakšno napako, da jo bom lahko popravil

V mojem sistemu je v splošnem pot pošte takšna:
Postfix -> Amavis -> DKIM milter -> naprej...



master.cf
Ta blok je za dohodno pošto: sporočilo prejme, ga pošlje skozi dohoden DKIM milter in odloži v dohodno vejo Amavis
smtp      inet  n       -       n       -       -       smtpd
  -o milter_macro_daemon_name=MTA
  -o smtpd_milters=inet:127.0.0.1:3301
  -o content_filter=smtp:[127.0.0.1]:10024
  -o smtpd_helo_restrictions=$incoming_smtpd_helo_restrictions


Ta blok je dohodna pošta, ki se vrača iz Amavisa...
127.0.0.1:10025 inet n  -       -       -       0       smtpd
  -o content_filter=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject


Ta blok je za mojo odhodno pošto: SSL + SASL avtentikacija sta obvezna. Prejeto sporočilo gre skozi odhodno vejo Amavis.
submission inet n       -       n       -       -       smtpd
  -o content_filter=smtp:[127.0.0.1]:10026
  -o header_checks=regexp:/etc/postfix/header_checks
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_restrictions=reject_non_fqdn_sender,reject_unknown_sender_domain
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,permit_sasl_authenticated,reject
  -o incoming_smtpd_helo_restrictions=
  -o broken_sasl_auth_clients=yes


Ta blok je za odhodno pošto, ki se vrača iz Amavis. Porine ga še skozi odhoden DKIM milter, potem pa naprej proti svetu.
127.0.0.1:10027 inet n  -       -       -       0       smtpd
  -o content_filter=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o milter_macro_daemon_name=ORIGINATING
  -o smtpd_milters=inet:127.0.0.1:3301




main.cf
Razen ostalih anti-SPAM in varnostnih nastavitev (lahko tudi te pokažem, čeprav so bolj ali manj "boilerplate") je tukaj samo ena nastavitev za DKIM milter:
milter_default_action = tempfail




/etc/mail/dkim-milter/dkim-filter.conf
Ostalo je na privzetih vrednostih. Pomemben je MacroList parameter, ki odloča o temu ali se bo DKIM podpis preverjal ali dodajal. KeyList kaže na datoteko, kjer so definicije ključev.
Canonicalization      relaxed/simple
Domain                  domena1.com, domena2.com
KeyList /etc/mail/dkim-milter/keys/keylist
MacroList               {daemon_name}=ORIGINATING
SignatureAlgorithm      rsa-sha256
SignatureTTL            15552000
X-Header                Yes




/etc/mail/dkim-milter/keys/keylist
Tukaj vpišeš wildcard e-mail naslova, v katero DKIM domeno spada in ime datoteke s privatnim RSA ključem.
*@domena1.com:domena1.com:domena1
*@domena2.com:domena2.com:domena2




/etc/mail/dkim-milter/keys/domena1, domena2
Tukaj je samo privaten RSA ključ.
-----BEGIN RSA PRIVATE KEY-----
MIICXQI...
...VNjJo/j
-----END RSA PRIVATE KEY-----




/var/named/chroot/var/named/data/domena1.zone
Tole je DKIM DNS zapis za domeno (javen RSA ključ).
domena1._domainkey IN    TXT     ( "v=DKIM1; h=sha256; g=*; k=rsa; t=y; "
                                  "p=MIGfMA0GC..."
                                  "..."
                                  "...DAQAB" )



Tako. To pri meni deluje, Google pa v glavo sporočila zapiše naslednje (upoštevaj, da imam urejen tudi SPF):
Authentication-Results: mx.google.com; spf=pass (google.com:
  domain of bluerunner@domena1.com designates xxx.xxx.xxx.xxx
  as permitted sender) smtp.mail= bluerunner@domena1.com;
  dkim=pass (test mode) header.i=@domena1.com


Ko ti bo vse delovalo, pa v DNS-u zamenjaš zastavico "t=y" z zastavico "t=n", s čemer poveš, da nisi več samo v testiranju (test mode).

shorvat ::

hvala za posredovane nastavitve. z njimi sem potestiral, ampak mi ni uspelo podpisati sporočila. bega me datoteka master.cf. na netu sem iskal "step by step" razlago delovanja, ampak nisem našel nič, kar bi mi bilo v pomoč.

V bistvu rabim nasledno pot:
Postfix -> DKIM milter -> naprej...

rabim samo podpisovanje odhodne pošte.

če dobro zastopim rabim naslednja dva bloka v datoteki maste.cf:

Ta blok je za mojo odhodno pošto: SSL + SASL avtentikacija sta obvezna. Prejeto sporočilo gre skozi odhodno vejo Amavis.

submission inet n - n - - smtpd
-o content_filter=smtp:[127.0.0.1]:10026
-o header_checks=regexp:/etc/postfix/header_checks
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sender_restrictions=reject_non_fqdn_sender,reject_unknown_sender_domain
-o smtpd_recipient_restrictions=reject_non_fqdn_recipient,permit_sasl_authenticated,reject
-o incoming_smtpd_helo_restrictions=
-o broken_sasl_auth_clients=yes


Ta blok je za odhodno pošto, ki se vrača iz Amavis. Porine ga še skozi odhoden DKIM milter, potem pa naprej proti svetu.

127.0.0.1:10027 inet n - - - 0 smtpd
-o content_filter=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o milter_macro_daemon_name=ORIGINATING
-o smtpd_milters=inet:127.0.0.1:3301


zanima me princip delovanja teh dveh blokov. nekako predvidevam, da gre meil skozi prvi blok (submission), ampak nevem kam nadaljuje pot. s katerim argumentom je označena nadaljnja pot?

zakaj porta 10026 in 10027? meni na teh dveh portih nič ne laufa.

-o content_filter=smtp:[127.0.0.1]:10026
127.0.0.1:10027


tole bo verjetno port, na katerem laufa dkim-filter:?

-o smtpd_milters=inet:127.0.0.1:3301


trenutno se v main.cf nahaja naslednje:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

reject_unknown_hostname, reject_non_fqdn_hostname


myhostname = mail.igratatin.co.cc
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server.local.lan, localhost.local.lan, localhost, mail.igratatin.co.cc
relay_domains = $mydestination
relayhost =
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mailbox_command =
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_alias_domains = igratatin.co.cc sloomaniak.co.cc
virtual_alias_maps = hash:/etc/postfix/virtual
home_mailbox = Maildir/
#header_checks = regexp:/etc/postfix/header_checks

milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = inet:127.0.0.1:8891


če sta v master.cf vpisana zgornja dva bloka, potem v main.cf verjetno ne potrebujem zadnjih dveh vrstic?!

me lahko kdo napoti na stran, kjer bi bila napisana razlaga master.cf datoteke?

lp, sašo

BlueRunner ::

master.cf je opisan kar sam v sebi, sicer pa je opisan v Postfix dokumentaciji.

Ampak nič ne de...

Moja shema "podajanja" sporočila za odhodno pošto je:

+--------+      587+---------+     10026+--------+     10027+---------+     25+---------+
| Sender |->->-----| Postfix |->->------| Amavis |->->------| Postfix |->->---| svet... |
+--------+         +---------+          +--------+          +----+----+       +---------+
                                                                 | 3301
                                                            +----+-----+
                                                            |   DKIM   |
                                                            +----------+


Tvoja shema pa bi lahko bila:
+--------+      587+---------+     25+---------+
| Sender |->->-----| Postfix |->->---| svet... |
+--------+         +----+----+       +---------+
                        | 3301
                   +----+-----+
                   |   DKIM   |
                   +----------+


To pomeni, da master.cf poenostaviš:
smtp      inet  n       -       n       -       -       smtpd
  -o milter_macro_daemon_name=MTA
  -o smtpd_milters=inet:127.0.0.1:3301
  -o smtpd_helo_restrictions=$incoming_smtpd_helo_restrictions

submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_restrictions=reject_non_fqdn_sender,reject_unknown_sender_domain
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,permit_sasl_authenticated,reject
  -o incoming_smtpd_helo_restrictions=
  -o broken_sasl_auth_clients=yes
  -o milter_macro_daemon_name=ORIGINATING
  -o smtpd_milters=inet:127.0.0.1:3301

Kar bo prispelo na postfix preko vrat 25, bo DKIM milter preveril DKIM podpis, če ta obstaja.
Kar bo prispelo na postfix preko vrat 587, bo DKIM milter podpisal, preden bo odposlano naprej.

Zgodovina sprememb…

shorvat ::

zdaj mi je veliko bolj jasno. hvala

imam pa še en problem sedaj. do sedaj sem pošiljal maile preko porta 25 (telental sem se na port 25), tako da je možno, da je zadeva že prej delovala, ampak nisem uporabljal porta 587 za pošiljanje.

problem se pa pojavi, ker na portu 587 server zahteva zahteva "STARTTLS command". kako je mogoče preko telneta uspešno poslati meil?


pa še ena zadeva. predvidevam, da se naslednja vrstica nanaše na port 587:

submission inet n - n - - smtpd


vse kar je zapisanao pod njo pa se "zgodi", kadar postfix prejme zahtevo preko porta 587. je to res?

lp, sašo

BlueRunner ::

Da, v master.cf se submission nanaša na "submission" vrata. Poglej v /etc/services, pa ti bo jasno kaj so tudi druga imena. Za strukturo master.cf datoteke pa si res preberi dokumentacijo. Če tukaj eno malenkost narobe napišeš, bodo rezultati čisto nepredvidljivi.

Jaz uporabljam posebna vrata za pošiljanje pošte (čeprav bi lahko uporabljal tudi 25) zaradi več razlogov. Eden izmed njih je bil tudi ta, da bolj pregledno ločim dohodno pot od odhodne poti in njim pripadajoča pravila za DKIM, SPAM filtriranje in preverjanje prisotnosti virusov.

Ker pa sem se odločil, da bom na submission vratih uporabljal izključno TLS, pa je temu primerna tudi konfiguracija, ki sem ti jo poslal. TLS lahko, če ti to ustreza, tudi umakneš. Vse kar moraš narediti je, da izbrišeš vrstico, kjer piše "-o smtpd_tls_security_level=encrypt".

Če pa želiš testirati SSL ali TLS povezave, pa uporabiš OpenSSL: "openssl s_client -connect localhost:587 -starttls smtp". Stvar ima sicer samo eno majhno napakico. Priporočam ti, da SMTP ukaze pišeš z majhnimi znaki, pa ne boš nikoli naletel na njo.

shorvat ::

testiram vse mogoče konfiguracije, ampak še vedno brez uspeha. se bom poglobil v ta dkim-filter in master.cf in prebral vso možno dokumentacijo od postfixa in dkim-filtra. sem pa v glavi sporočila zaznal še eno zadevo. in sicer, če si pošljem na gmail račun sporočilo iz volje (tuštelekom) je v headerju naslednji vpis:

Received: from localhost (webmail.volja.net [217.72.64.50])
by webmail.volja.net (Postfix) with ESMTP id DB5F173005
for smrkc.krep@gmail.com; Sat, 10 Jan 2009 13:51:40 +0100 (CET)


tale je pa moj:

Received: from mail.igratatin.co.cc (localhost [127.0.0.1])
by mail.igratatin.co.cc (Postfix) with ESMTP id 59F501FD30
for smrkc.krep@gmail.com; Sat, 10 Jan 2009 14:09:49 +0100 (CET)


volja svojih odhodnih meilov ne podpiše z DomainKey, ampak se sporočilo vseeno ne znajde med vsiljeno pošto. bi bilo možno, da bi zaradi te vrstice gmail-ov filter vtaknil sporočilo med spam?

kaj je potrebno storiti, če hočem, da header vrstica zgleda takole:

Received: from localhost (mail.igratatin.co.cc [193.77.83.253])
by mail.igratatin.co.cc (Postfix) with ESMTP id 59F501FD30
for smrkc.krep@gmail.com; Sat, 10 Jan 2009 14:09:49 +0100 (CET)


se pravi, rad bi, da je ime domene v oklepaju (pravtako zunanji IP - 193.77.83.253), localhost pa tam, kje je sedaj ime domene.

hvala, sašo

BlueRunner ::

Pozabi na "Received" vrstice. Ker lahko tukaj kdorkoli napiše karkoli, jih v tem kontekstu nihče ne jemlje resno oziroma upošteva.

Daj raje povej kaj testiraš, oziroma do kakšnih napak prihaja. Če rečeš, da nič ne dela, ti bo težko kdo pomagal...

shorvat ::

v logih (mail.log, mail.err, mail.warn) ni zaznati nobene napake. postfix se poveže z dkim-filter in meil se pošlje. problem je v tem, da meili niso podpisani.

se v meil headerju sploh vidi, da je podpisan?

zadevo sem preverjal na linku:

http://www.mailradar.com/domainkeys/

trenutna konfiguracija:

main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

#myhostname = server.local.lan
myhostname = mail.igratatin.co.cc
mydomain = mail.igratatin.co.cc
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = server.local.lan, localhost.local.lan, localhost, mail.igratatin.co.cc
#mydestination = mail.igratatin.co.cc
relay_domains = $mydestination
#relayhost = mail.siol.net
relayhost =
#mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mailbox_command =
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_alias_domains = igratatin.co.cc sloomaniak.co.cc
virtual_alias_maps = hash:/etc/postfix/virtual
home_mailbox = Maildir/
#header_checks = regexp:/etc/postfix/header_checks

milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = inet:127.0.0.1:8891

notify_classes = resource, software, bounce, delay, policy, protocol


master.cf:


#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
#smtps inet n - - - - smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#628 inet n - - - - qmqpd
pickup fifo n - - 60 1 pickup
cleanup unix n - - - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - - 300 1 oqmgr
tlsmgr unix - - - 1000? 1 tlsmgr
rewrite unix - - - - - trivial-rewrite
bounce unix - - - - 0 bounce
defer unix - - - - 0 bounce
trace unix - - - - 0 bounce
verify unix - - - - 1 verify
flush unix n - - 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - - - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - - - - smtp
-o smtp_fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - - - - showq
error unix - - - - - error
retry unix - - - - - error
discard unix - - - - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - - - - lmtp
anvil unix - - - - 1 anvil
scache unix - - - - 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# See the Postfix UUCP_README file for configuration details.
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}

smtp inet n - n - - smtpd
-o milter_macro_daemon_name=MTA
-o smtpd_milters=inet:127.0.0.1:8891
-o non_smtpd_milters=inet:127.0.0.1:8891
-o smtpd_helo_restrictions=$incoming_smtpd_helo_restrictions

submission inet n - n - - smtpd
-o milter_macro_daemon_name=ORIGINATING
-o smtpd_milters=inet:127.0.0.1:8891
-o non_smtpd_milters=inet:127.0.0.1:8891


je možno kako potestirati dkim-filter?

lp

BlueRunner ::

Potestiraš ga tako, da pošlješ sporočilo, nato pa pogledaš v glavo sporočila, če se tam nahaja "DKIM-Signature".

Če tega ni, potem sporočilo verjetno ni šlo skozi milter, ali pa ga milter ni razpoznal kot potrebnega podpisovanja. Predvsem preveri, da je "From" v sporočilu pravilen in, da je keylist datoteka pravilno izpolnjena. Če to dvoje ne klapa, potem milter ne bo vedel s katerim ključem podpisati sporočilo.

Za pomoč pa lahko v nastavitvah povečaš stopnjo logiranja, da boš videl kako gre (ali ne gre) sporočilo skozi milter.

shorvat ::

ker imam samo 1 privatni ključ, ne uporabljam keylist, ampak kar KeyFile.

Kje in kako povečam stopnjo logiranje?

prej sem mel v master.cf:

...
...
smtp unix - - - - - smtp
...
...
...
smtp inet n - n - - smtpd
-o milter_macro_daemon_name=MTA
-o smtpd_milters=inet:127.0.0.1:8891
-o non_smtpd_milters=inet:127.0.0.1:8891
-o smtpd_helo_restrictions=$incoming_smtpd_helo_restrictions


sporočila so se uspešno poslala. sedaj sem pa zakomentiral prvo smtp vrstico:

...
...
#smtp unix - - - - - smtp
...
...
...
smtp inet n - n - - smtpd
-o milter_macro_daemon_name=MTA
-o smtpd_milters=inet:127.0.0.1:8891
-o non_smtpd_milters=inet:127.0.0.1:8891
-o smtpd_helo_restrictions=$incoming_smtpd_helo_restrictions


pa se meil več ne pošlje

v logih pa tole:

Jan 10 16:59:22 server postfix/smtpd[4967]: warning: database /etc/postfix/virtual.db is older than source file /etc/postfix/virtual
Jan 10 16:59:22 server postfix/smtpd[4967]: connect from localhost[127.0.0.1]
Jan 10 16:59:22 server postfix/cleanup[4972]: warning: database /etc/postfix/virtual.db is older than source file /etc/postfix/virtual
Jan 10 16:59:22 server postfix/smtpd[4967]: 62B2C1FD9A: client=localhost[127.0.0.1]
Jan 10 16:59:22 server postfix/cleanup[4972]: 62B2C1FD9A: message-id=3766a04d7b7befc8092db5571be1b332@mail.igratatin.co.cc
Jan 10 16:59:23 server postfix/qmgr[4966]: 62B2C1FD9A: from=saso@mail.igratatin.co.cc, size=2533, nrcpt=1 (queue active)
Jan 10 16:59:23 server postfix/smtpd[4967]: disconnect from localhost[127.0.0.1]
Jan 10 16:59:23 server postfix/qmgr[4966]: warning: connect to transport smtp: Connection refused
Jan 10 16:59:23 server postfix/error[4973]: 62B2C1FD9A: to=smrkc.krep@gmail.com, relay=none, delay=0.78, delays=0.67/0.05/0/0.06, dsn=4.3.0, status=deferred (mail transport unavailable)

BlueRunner ::

Joj, joj, joj.... Poglej si v dokumentacijo kaj in kako se zapisuje v master.cf! Nihče ti ne bo prevajal v slovenščino samo zato, ker sam še nisi uspel prebrati niti osnovne dokumentacije na vrhu te datoteke.

$ man 5 master.cf


The general format of the master.cf file is as follows:

· Each logical line defines a single Postfix service. Each service is
identified by its name and type as described below. When multiple lines
specify the same service name and type, only the last one is remembered.
Otherwise, the order of master.cf service definitions does not matter.

· Empty lines and whitespace-only lines are ignored, as are lines whose
first non-whitespace character is a ‘#’.

· A logical line starts with non-whitespace text. A line that starts
with whitespace continues a logical line.

Zgodovina sprememb…

BlueRunner ::

Zakaj točno imaš vpisano
-o smtpd_milters=inet:127.0.0.1:8891
-o non_smtpd_milters=inet:127.0.0.1:8891

DKIM milter je smtpd_milter in nič drugega...

Preko katerih vrat pošiljaš pošto in preko katerih jo prejemaš? Kaj imaš za ta dvoja vrata vpisano v master.cf?

Ali si povečal stopnjo diagnostike za milter, ki jo seveda spremeniš v nastavitveni datoteki za milter?

Zgodovina sprememb…

shorvat ::

Zakaj točno imaš vpisano

-o smtpd_milters=inet:127.0.0.1:8891
-o non_smtpd_milters=inet:127.0.0.1:8891


najprej sem imem vpisano brez zadnje vrstice. ker ni delalo, sem jo dodal (poskusno, ampak brez uspeha). našel sem pa tole zadeva na linku, ki opisuje, kako pravilno nastaviri dkim-filter.

http://stas.nerd.ro/blog/index.php/read...

portov za odhajajočo in prihajajočo pošto nisem spreminjal. so kar privzeti, 25 smtp, 110 pop.

tudi dkim-filter laufa na privzetih vratih, toraj 8891.

$ man 5 master.cf


tole sem si prebral, pa mi zadeve niso popolnoma jasne (problem ne tiči v angleščini, ampak v razumevanju "tehnologije")

priznam, zadeva je zelo kompleksna. zahteva ker precej mrežnega znanja, ki ga očitno nimam dovolj, da bi razumel vse te nastavitve in njihovo delovanje.

logi za dkim-filter:

Syslog yes
Statistics /var/log/dkim-filter/dkim-stats


ampak te datoteke sploh ni med logi: /var/log/dkim-filter/dkim-stats

lp

BlueRunner ::

OK, greva malo drugače. Sicer bom še enkrat povedal isto, ampak bmo poskusil malo manj kriptično, glede na to, da ti tehnologija še ni "v krvi".

Najprej DKIM milter.

Ta dela dve različni zadevi. Sporočilo ti podpiše, ali pa ti podpis preveri. V njegovem .config mu ukažeš eno ali drugo z uporabo "MacroList {daemon_name}=ORIGINATING". To pomeni, da bo sporočilo podpisal, če bo imel parameter "{daemon_name}" vrednost "ORIGINATING". V vseh drugih primerih bo samo preveril podpis, če ta obstaja.

Potem je tukaj Postfix.

Ta mora DKIM milter uporabiti, kar mu dopoveš z nastavitvijo "smtpd_milters=inet:127.0.0.1:3301" sporočilo, ki bo šlo skozi SMTP komponento (smtpd daemon) Postifx-a bo ta poslal še na obdelavo v milter. To nastavitev pa lahko zapišeš kar v main.cf datoteko.

Vendar pa je potrebno povedati kaj naj milter naredi: podpiše ali preveri.

To je možno narediti na več različnih načinov, najpogostoje pa se to naredi z uporabo parametrov. Tisti "{daemon_name}", ki sem ga omenjal, moram v Postfix-u definirati. V primeru, da se sporočilo podpisuje definiram opcijo "milter_macro_daemon_name=ORIGINATING". V primeru, da se sporočilo preverja, pa moram definirati neko drugo ime. Npr. "milter_macro_daemon_name=MTA".

Sedaj pa imam dilemo. Če sporočila prejemam, mora v main.cf pisati eno, če pa sporočila pošiljam, pa mora v main.cf pisati nekaj drugega. Šele tukaj se lotim master.cf datoteke.

Njena struktura je v splošnem takšna, kot sem zgoraj napisal. Bolj po domače povedano pa gre to tako:
- prva vrstica bloka definira Postfix proces. Vrata na katerih posluša, ime daemon-a, tip komunikacije, ... tega se pravilma ne dotikaš, oziroma kvečjemu popravljaš naslov in vrata na katerih se nekaj dogaja.
- vsaka naslednja vrstica, ki se začne zamaknjeno, spada v isti blok s prvo vrstico.
- prva vrstica, ki se znova začne na prvem mestu, začne nov blok

Če se prve vrstice v bloku načeloma ne dotikaš, pa vse naslednje zamaknjene uporabiš za dodajanje opcij daemon-u, ki je definiran v prvi vrstici bloka po sistemu "-o macro=vrednost". Logika parametrov je namreč ta, da bo vsak daemon svoje opcije prebral iz main.cf, potem pa prepisal z vrednostmi iz ukazno vrstice. No, master.cf definira ukazne vrstice za posamezne komponente Postfix-a, ko si sporočilo podajajo med seboj.

To pa sedaj pomeni, da lahko narediš dva bloka (oziroma uporabiš dva že narejena):
"smtp inet ...." posluša na tcp 25, torej dobi "-o milter_macro_daemon_name=MTA"
"submission ..." posluša na tcp 587, torej dobi "-o milter_macro_daemon_name=ORIGINATING"

To sedaj pomeni, da se bo sporočila, ki prihajajo na tcp 25 preverjalo, sporočila, ki prihajajo na tcp 587 pa podpisovalo.

Edino, kar ti sedaj še ostane je, da tcp 587 zaščitiš, tako da ne bo mogel kar kdorsigažebodi pošiljati DKIM podpisanih sporočil skozi tvoj sistem. Uporabiš netfilter, omejiš povezave na 127.0.0.1 in ::1, zahtevaš SASL avetntikacijo, ... kar ti pač ustreza.

To pa je bolj ali manj vse, kar je mehanike. Za preverjanje delovanja pa v syslogd.conf poskrbiš, da se nekam vpisujejo tudi INFO in DEBUG sporočila - za INFO nisem prepričan, ampak DEBUG se, kolikor se spomnem Ubuntu-ja, privzeto ne shranjujejo.

shorvat ::

situacija je sedaj sledeča:

header:

Return-Path: saso@mail.igratatin.co.cc
X-Original-To: saso@mail.igratatin.co.cc
Delivered-To: saso@mail.igratatin.co.cc
Received: from LENOVOLEN2272 (rut.local.lan [192.168.1.4])
by mail.igratatin.co.cc (Postfix) with ESMTP id E2DE21FD2F
for saso@mail.igratatin.co.cc; Mon, 12 Jan 2009 10:30:28 +0100 (CET)
X-DKIM: Sendmail DKIM Filter v2.5.4 mail.igratatin.co.cc E2DE21FD2F
Message-ID: 88BA8872627143548FC8C6C323EB13F9@LENOVOLEN2272
From: "saso@mail.igratain.co.cc" saso@mail.igratatin.co.cc
To: "saso@mail.igratain.co.cc" saso@mail.igratatin.co.cc
Subject: uz
Date: Mon, 12 Jan 2009 10:30:31 +0100
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_00C3_01C974A0.CB6D0A00"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.5512
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579


kar predvidevam, pomeni, da je sporočilo šlo skozi DKIM, ampak ga ta ni podpisal.

master.cf:

smtp inet n - n - - smtpd
-o milter_macro_daemon_name=MTA
-o smtpd_milters=inet:127.0.0.1:8891
-o smtpd_helo_restrictions=$incoming_smtpd_helo_restrictions

submission inet n - n - - smtpd
-o milter_macro_daemon_name=ORIGINATING
-o smtpd_milters=inet:127.0.0.1:8891


dkim-filter.conf:

Syslog yes
Canonicalization relaxed/simple
Domain igratatin.co.cc
KeyFile /etc/key/private.key
MacroList {daemon_name}=ORIGINATING
SignatureAlgorithm rsa-sha256
SignatureTTL 15552000
Canonicalization relaxed/simple
X-Header Yes
Selector mail


mislim, da DNS nastavitve v tej fazi še niso pomembne? ali pač? preverja dkim filter DNS TXT zapis preden podpiše sporočilo?

nikakor ne morem dkim filtra prepričat, da bi beležil loge. uporabil sem direktivo:
Syslog yes
ampak v syslog-ih ni zaznati nobeni logov, ki bi se nanašali na kdim. zabeleži se edino tale vrstica, ko dkim poženem:

server dkim-filter[10136]: Sendmail DKIM Filter v2.5.4 starting (args: -x /etc/dkim-filter.conf -u dkim-filter -P /var/run/dkim-filter/dkim-filter.pid -p inet:8891@localhost)


kakšna ideja?

BlueRunner ::

Sporočilo je res šlo skozi milter in ta ga res ni podpisal, temveč samo označil svojo "prisotnost".

Si sporočilo poslal preko vrat 587 ali kako drugače?

Ali ima postfix težave s pravicami - branje datoteke s ključem?

V dkim-filter.conf lahko nastaviš še parametre "MilderDebug 9" in "SyslogSuccess yes". V syslog.conf pa morda dodaš še beleženje DEBUG sporočil. Zadnjega Ubuntu-ja sem se znebil nekaj mesecev nazaj, pa sem že pozabil kakšne so njegove privzete vrednosti.

shorvat ::

sporočilo sem poslal preko vrat 587. uporabil sem "telnet localhost 587"

Ali ima postfix težave s pravicami - branje datoteke s ključem?


hm... mislim da ne. logi syslog, messages, mail.log, mail.err tega ne zaznajo. postfix bere datoteko s ključem? verjetno datoteko s ključem bere dkim. pravice za to datoteko sem nastavil tako, da lahko vsi iz nje berejo ("chmod a+r").

syslog že privzeto piše DEBUG sporočila. ampak v debug logu ni nobenih sporočil, ki bi se nanašale na dkim-filter.

SyslogSuccess yes - tole verjetno pomeni, da se v log beleži status o uspešno podpisanem sporočilu. skratka, to zadevo sem dodal v .conf in v logih ni zaznati, da bi bilo katerokoli sporočilo uspešno podpisano.

shorvat ::

našel sem orodje za testiranje paketa dkim-filter.

# dkim-testkey -d igratatin.co.cc -s mail

odgovorj je pa:

dkim-testkey: dkim.c:313: dkim_param_get: Assertion `set != ((void *)0)' failed.
Aborted

BlueRunner ::

Ej... prav postavil bom eno kopijo Ubuntu nazaj, da vidim kaj je tukaj narobe.

Ti sporočim, ko bom imel rezutate.

shorvat ::

na mojem sistemu laufa:

Distributor ID: Ubuntu
Description: Ubuntu 8.04.1
Release: 8.04
Codename: hardy


se že v naprej zahvaljujem. glede na tvoj trud, ki ga vlagaš v ta moj post srčno upam, da boš tudi ti imel kaj od vsega tega.

lp

Zgodovina sprememb…

  • spremenil: shorvat ()

BlueRunner ::

OK, medtem, ko se še kregam z Ubuntu-jem, mi povej kakšne imaš vrednosti za Domain in Selector v dkim-filter.conf.

shorvat ::

Domain igratatin.co.cc
Selector mail

BlueRunner ::

OK. Ubuntu 8.04 LTS Server namestitev.

Iz ukazne vrstice sem naredil tole:
$ sudo apt-get install postfix
$ sudo apt-get install dkim-filter

...
tukaj popravim datoteke
...

$ sudo mkdir /etc/mail
$ cd /etc/mail
$ sudo openssl genrsa -out dkim.key 2048
$ sudo invoke-rc.d dkim-filter restart
$ sudo invoke-rc.d postfix restart


V datoteke pa sem dopisal ali spremenil tole:
/etc/dkim-filter.conf:
Domain             example.com
KeyFile            /etc/mail/dkim.key
Selector           2007
SignatureAlgorithm rsa-sha256


/etc/postfix/master.cf:
submission inet n - - - - smtpd
  -o milter_macro_daemon_name=ORIGINATING


/etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:8891


Nato je sledil "$ telnet localhost 587" na drugi strani pa sem dobil tole:
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=example.com; s=2007;
	t=1231782953; bh=g3zLYH4xKxcPrHOD18z9YfpQcnk/GaJedfustWU5uGs=;
	h=Subject:Message-Id:Date:From:To; b=J3ybtHnRVMW5AqbkEE7id+/fUOshqb
	UH9Cx4KS8nDn6cOXLA8tEnvhV5/uVJMlNCx2DOpOkTIG+jQ9TnLSIy6lKQCg/FUBBFX
	J035dRJP3v5nDK/Lt4RJIOvM8sJGPSLDvD9Kc2CH1eBbWkZhHaYFinftjNyVONBNm0e
	G5fFVmNAlrdUbCu5hULUshRycWwU9qk7w06GNpQTft54XFlki5jJLeRoVDLJY0pRyrR
	8jpMKUw+7QSP5N84MY06qiKcnqLV0aPWdFVi+lR1rDxldsNeLYdtowtYOEnTG3EJyo8
	t7n1Zg4LkxUoIE9FdaEUoUE+2Id1QOxaKfJ/JoaFQaXA==


Pa potem, ko sem videl tvoj odgovor sem opazil še eno stvar: "From" naslov v tvojem sporočilu je @mail.igratatin.co.cc, parameter Domain v dkim-filter.conf pa imaš nastavljen na igratatin.co.cc. To dvoje se mora natančno ujemati, če ne ne bo podpisa.

Zgodovina sprememb…

shorvat ::

končno je uspelo. sporočilo je sedaj podpisano. gmail ga še vedno vrže med vsiljeno pošto, tako da se bom moral sedaj še malo v DNS nastavitve poglobiti.

zelo sem hvaležen za vso pomoč.

BlueRunner: ne vem kako naj se ti zahvalim?! te lahko počastim s kako pijačo?

lp, sašo

shorvat ::

situacija je sedaj sledeča. spf=pass, dkim=pass; mail pa še vedno med vsiljeno pošto. tole je header:

Delivered-To: smrkc.krep@gmail.com
Received: by 10.180.248.6 with SMTP id v6cs453176bkh;
Mon, 12 Jan 2009 12:52:48 -0800 (PST)
Received: by 10.86.61.13 with SMTP id j13mr17108160fga.23.1231793567595;
Mon, 12 Jan 2009 12:52:47 -0800 (PST)
Return-Path: saso@mail.igratatin.co.cc
Received: from mail.igratatin.co.cc (mail.igratatin.co.cc [193.77.83.253])
by mx.google.com with ESMTP id 4si11709978fge.35.2009.01.12.12.52.45;
Mon, 12 Jan 2009 12:52:46 -0800 (PST)
Received-SPF: pass (google.com: domain of saso@mail.igratatin.co.cc designates 193.77.83.253 as permitted sender) client-ip=193.77.83.253;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of saso@mail.igratatin.co.cc designates 193.77.83.253 as permitted sender) smtp.mail=saso@mail.igratatin.co.cc; dkim=pass header.i=@mail.igratatin.co.cc
Received: from mail.igratatin.co.cc (localhost [127.0.0.1])
by mail.igratatin.co.cc (Postfix) with ESMTP id E57671FD2B
for smrkc.krep@gmail.com; Mon, 12 Jan 2009 21:52:44 +0100 (CET)
X-DKIM: Sendmail DKIM Filter v2.5.4 mail.igratatin.co.cc E57671FD2B
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mail.igratatin.co.cc;
s=mail; t=1231793565; x=1247345565; bh=LOyMI/HledDZCzkBZsnqfS7mHtLK
xJp33A6PToqBVsc=; h=Date:To:From:Reply-to:Subject:Message-ID:
MIME-Version:Content-Transfer-Encoding:Content-Type; b=Htp....
wSGEvPFoCRZc+3Dvy7CHubNVb0=
Date: Mon, 12 Jan 2009 21:52:44 +0100
To: smrkc.krep@gmail.com
From: Tatin saso@mail.igratatin.co.cc
Reply-to: Tatin saso@mail.igratatin.co.cc
Subject: Aktivacija na portalu Tatin
Message-ID: c4e44c1120babda5b2a24470bc4a62db@mail.igratatin.co.cc
X-Priority: 3
X-Mailer: PHPMailer (phpmailer.codeworxtech.com) [version 2.2]
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/html; charset="utf-8"


kako je to mogoče? je to zato, ker je tako domena kot tudi ip v eni izmed mail blacklist baz?

BlueRunner ::

Google ima svoj bazo.

Lahko pa še nekaj drugega preverim. Ali je ta IP naslov, ki se tukaj pojavlja resničen?

shorvat ::

je resničen

shorvat ::

sporočam, da je menjava domene (.com) obrodila sadove. gmail me več ne da med spam. pri yahoo-ju pa se sporočila še vedno znajdejo med vsiljeno pošto. opazil sem, da yahoo ignorira DKIM-Signature, upošteva samo DomainKeys zapis v header glavi. lahko sporočilo podpišem z DKIM in DomainKeys hkrati?

lp
1
2
»


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Spam

Oddelek: Pomoč in nasveti
345520 (3977) Matko
»

Mail strežnik na linuxu

Oddelek: Omrežja in internet
131776 (1475) x.sci
»

Postfix Relay access denied

Oddelek: Programska oprema
61845 (1763) jype
»

Postfix MX lookup

Oddelek: Omrežja in internet
252205 (1804) Bakunin
»

all in one mail server

Oddelek: Omrežja in internet
142527 (2117) r5r

Več podobnih tem