Server postfix

Das muss man wissen:

# client
# sender
# recipient
# relay

smtpd_client_restrictions = 
smtpd_sender_restrictions = 
smtpd_recipient_restrictions = 
smtpd_relay_restrictions = 
smtpd_data_restrictions = 
smtpd_end_of_data_restrictions = 
smtpd_etrn_restrictions = 
smtpd_helo_restrictions = 

mynetworks = 
myhostname = 
smtpd_password_required = yes

# unknown 
# reject_unknown_client
# reject_unknown_client_hostname
# reject_unknown_reverse_client_hostname
# reject_unknwon_helo_hostname
# reject_unknown_hostname
# reject_unknown_sender_domain
# reject_unknwon_recipient_domain 

# hostname 
# reject_unknown_client_hostname
# reject_unknown_reverse_client_hostname
# reject_unknown_hostname
# reject_invalid_hostname
# reject_non_fqdn_hostname
# reject_unknown_helo_hostname

# non_fqdn 
# reject_non_fqdn_hostname
# reject_non_fqdn_sender
# reject_non_fqdn_recipient

# sender
# reject_non_fqdn_sender
# reject_unknown_sender_domain

# recipient
# reject_non_fqdn_recipient
# reject_unknown_recipient_domain 

# unauth
# reject_unauth_pipelining
# reject_unauth_destination 

a CAPABILITY
a LOGIN "user" "password"
a LIST "" *
a SELECT INBOX
a FETCH 1 RFC822
a STORE 1 +FLAGS (\Seen \Deleted)
a CLOSE
a EXPUNGE
a SEARCH
a LOGOUT

HELO/EHLO
MAIL
DATA 
RST
VRFY
EXPN
NOOP
QUIT
MAIL FROM: RCPT TO:

Return-Path:
Recevied:
From:
To:
Subject:
Date:
Message-ID:
User-Agent:
MIME-Version:
Content-Transfer-Encoding:
Content-Type:
Importance:
Reply-To:
X-Priority:
X-Assp-..:

/etc/dovecot/dovecot.conf
/etc/dovecot/conf.d/...
/etc/dovecot/conf.d/10-...conf
/etc/dovecot/conf.d/15-...conf
/etc/dovecot/conf.d/20-...conf
/etc/dovecot/conf.d/90-...conf
/etc/dovecot/conf.d/auth-...conf
/etc/dovecot/conf.d/10-auth.conf
/etc/dovecot/conf.d/10-ssl.conf
/etc/dovecot/conf.d/10-master.conf
/etc/dovecot/conf.d/10-mail.conf
/etc/dovecot/conf.d/10-tcpwrapper.conf
/etc/dovecot/conf.d/10-logging.conf
/etc/dovecot/conf.d/10-director.conf
/etc/dovecot/conf.d/20-pop3.conf
/etc/dovecot/conf.d/20-imap.conf

apt-get install drbd8-utils
apt-get install xfsprogs

kate /etc/drbd/drbd.res 

ressource r0 {
    ...
    node ituenix1 {
        device /etc/loop1;
        adress 192.168.178.37:1111;
    }
}

dd if=/dev/zero of=drbd.img count=1024k bs=1024 
loosetup /dev/loop1 drbd.img

modeprobe drbd
drbdadm up r0
cat /proc/drbd

modeprobe drbd
drbdadm up r0
drbdadm -- --overwrite-data-of-peer primary r0
cat /proc/drbd

/etc/ha.d/authkeys
/etc/ha.d/ha.cf
/etc/ha.d/haressources

/etc/ha.d/authkeys

auth 1
1 md5 password

/etc/ha.d/ha.cf

node ituenix1 ituenix2

ucast eth0 192.168.178.28
ucast eth0 192.168.178.37

ping 192.168.178.1

debugfile /var/log/ha-dbg
logfile /var/log/ha-log 

/etc/ha.d/haressources 

ituenix1 192.168.178.37 apache2 

./skript.sh
/bin/bash ./skript.sh
bash skript.sh

#!/bin/bash 

echo "Ausgabe"
# Kommentar

var1="abc"
var2="def"

echo $var1
echo $var2

while [ $var1 == $var2 ]
do
    echo $var1
done

if [ $var1 == $var2 ]
then
    echo $var1
else
    echo $var2
fi

for var3 in "a " "b " "c "
do 
    echo $var3
done 

typeset -i i=5
i=$(( 4 ))
i=$(( 4+4 ))

while [ $i -ge 0 ]
do
    echo $i
    i=$(( $i-1 ))
done

useradd
userdel
usermod
newgrp
groupadd
groupdel
groupmod
chsh
chfn
passwd 
id

pwd
cd
mkdir
cp
mv
mmv
rm
rmdir
unlink

basename
dirname
touch

man
info
cat
cut
md5sum
lsof
lsblk
blkid
dd
mount/umount

shred
sort
split

echo 
exit

uniq
update
locatedb

date

chattr
chmod
chown
chgrp

less
head
more
tail

nice
renice
pgrep
pidof
at
crontab
dmesg
tree
tre-agrep

array_key_exists
in_array
print_r
shuffle
explode
implode
krsort
ksort
arsort
asort
rsort
sort
natcasesort
natsort

fopen
gethchar
putchar
getch
getc 
fgetc 
putc 
fputc 
gets 
fgets 
puts 
fputs 
printf
scanf
fprintf 
fscanf 
sprintf 
sscanf 
fread
fwrite 
getline 

setbuf
setvbuf
tmpname
tmpfile
perror
strerror
ferror
fflush
fseek
rewind
ftell
fsetpos
fgetpos

PUBLIC phys_clicks alloc_mem (phys_clicks clicks) {
    struct hole *hp, *prev_ptr;
    phys_clicks clicks;
    
    hp = hole_head;
    while ( hp != NIL_HOLE ) {
        if (hp->h_len >= clicks) {
            old_base = hp->h_base;
            hp->h_base += clicks;
            hp->h_len -= clicks;
            
            if (hp->h_len != 0) return old_base;
            
            del_slot (prev_ptr, hp);
            return old_base;
        }
        prev_ptr = hp;
        hp = hp->h_next;
    }
}

mm/mproc.h
mm/const.h
mm/glo.h

mm/signal.c
mm/break.c
mm/getset.c
mm/putc.c
mm/alloc.c
mm/forkexit.c
mm/exec.c
mm/alloc.c

Oder - andere Version

# client 
# sender 
# recipient
# relay

smtpd_client_restrictions=
smtpd_sender_restrictions=
smtpd_relay_restrictions=
smtpd_recipient_restrictions=
smtpd_data_restrictions=
smtpd_end_of_data_restrictions=
smtpd_etrn_restrictions=
smtp_helo_restrictions=

mynetworks=
myhostname=
smtpd_helo_required=yes

# permit_mynetworks
# check_policy_service

# unknown
# reject_unknown_client
# reject_unknown_client_hostname
# reject_unknown_reverse_client_hostname
# reject_unknown_helo_hostname
# reject_unknown_hostname
# reject_unknown_sender_domain
# reject_unknown_recipient_domain 

# hostname 
# reject_unknown_client_hostname
# reject_unknown_reverse_client_hostname
# reject_unknown_hostname
# reject_invalid_hostname
# reject_non_fqdn_hostname
# reject_unknown_helo_hostname

# non_fqdn 
# reject_non_fqdn_hostname
# reject_non_fqdn_sender
# reject_non_fqdn_recipient

# sender
# reject_non_fqdn_sender
# reject_unknown_sender_domain

# recipient
# reject_non_fqdn_recipient
# reject_unknown_recipient_domain

# unauth
# reject_unauth_pipelining
# reject_unauth_destination

a CAPABILITY
a LOGIN "user" "password"
a LIST "" *
a SELECT INBOX
a FETCH 1 RFC822
a STORE 1 +FLAGS (\Seen \Deleted)
a CLOSE
a EXPUNGE
a SEARCH
a LOGOUT

HELO/EHLO
MAIL
DATA 
RST 
VRFY
EXPN
NOOP
QUIT

Return-Path:
Recevied:
From:
To:
Subject:
Date:
Message-ID:
User-Agent:
MIME-Type:
Content-Transfer-Encoding:
Content-Type:
Importance:
Reply-To:
X-Priority:
X-Assp-..:

/etc/dovecot/dovecot.conf
/etc/dovecot/conf.d/...
/etc/dovecot/conf.d/10-...conf
/etc/dovecot/conf.d/15-...conf
/etc/dovecot/conf.d/20-...conf
/etc/dovecot/conf.d/90-...conf
/etc/dovecot/conf.d/auth-...conf
/etc/dovecot/conf.d/10-auth.conf
/etc/dovecot/conf.d/10-logging.conf
/etc/dovecot/conf.d/10-mail.conf
/etc/dovecot/conf.d/10-master.conf
/etc/dovecot/conf.d/10-director.conf
/etc/dovecot/conf.d/10-ssl.conf
/etc/dovecot/conf.d/10-tcpwrapper.conf
/etc/dovecot/conf.d/20-pop3.conf
/etc/dovecot/conf.d/20-imap.conf

apt-get install drbd8-utils
apt-get install xfsprogs

kate /etc/drbd.d/drbd.res 

ressource r0 {
    ...
    on ituenix3.de {
       disk /dev/loop1;
       adress 192.168.178.27:1111;
    }
}

dd if=/dev/zero of=drbd.img bs=1024 count=1024k
losetup /dev/loop1 drbd.img

modprobe drbd
drbdadm up r0
cat /proc/drbd

modprobe drbd
drbdadm up r0
drbdadm -- --overwrite-data-of-peer primary r0
cat /proc/drbd

/etc/ha.d/authkeys
/etc/ha.d/ha.cf
/etc/ha.d/haressources

/etc/ha.d/authkeys

auth 1
1 md5 password 

/etc/ha.d/ha.cf

node ituenix1 ituenix2

ucat eth0 192.168.178.37
ucat eth0 192.168.178.28

ping 192.168.178.1

logfile /var/log/ha-log 
debugfile /var/log/dbg-log 

/etc/ha.d/haressources 

ituenix1 192.168.178.37 apache2 

./skript.sh
/bin/bash ./skript.sh
bash skript.sh

#!/bin/bash 

echo "Ausgabe"
# Kommentar

var1=Hallo
var2=Welt

echo $var1
echo $var2

if [ $var1 == $var2 ]
then 
    echo $var1
else
    echo $var2
fi

while [ $var1 == $var2 ]
do
    echo $var1
done

for var3 in "aber " "hallo " "welt "
do
    echo $var3
done

typeset -i i=3
i=$(( 4 ))
i=$(( 4+4 ))

while [ $i -ge 0 ] 
do
    echo $i
    i=$(( $i-1 ))
done

useradd
userdel
usermod
newgrp
groupadd
groupdel
groupmod
chsh
chfn
passwd
id

echo 
exit

pwd
cd
mkdir
touch
ln
ls
cp
rm
rmdir
mv
mmv
unlink

basename
dirname

cat
cut

diff
comm

md5sum
lsof
lsblk
blkid

mount/umount
dd

man
info
grep
tre-agrep

head
less
more
tail

nice
renice
pidof
pgrep

at
crontab
dmesg

chattr
chgrp
chown
chmod

shred
sort
spilt

date

PHYS_CLICKS alloc_mem (PHYS_CLICKS clicks) {
    struct hole *hp, *prev_ptr;
    PHYS_CLICKS old_base;
    
    hp = hole_head;
    while ( hp != NIL_HOLE ) {
        if ( hp->h_len >= clicks ) {
            old_base = hp->h_base;
            hp->h_base += clicks;
            hp->h_len -= clicks;
            if ( hp-> h_len != 0 ) return (old_base);
            del_slot(prev_ptr, hp);
            return (old_base);
        }
        prev_ptr = hp;
        hp = hp->h_next;
    }
    
return (NO_MEM);
}

mm/mproc.h
mm/glo.h
mm/param.h
mm/const.h

mm/alloc.c
mm/forkexit.c
mm/exec.c
mm/signal.c
mm/break.c
mm/getset.c
mm/putc.c


Also, generell gelten folgende Dinge:

1.) Die /etc/postfix/main.cf

Hier stehen Dinge, wie

# client 
# sender 
# recipient
# relay

smtpd_client_restrictions=
smtpd_sender_restrictions=
smtpd_relay_restrictions=
smtpd_recipient_restrictions=
smtpd_data_restrictions=
smtpd_end_of_data_restrictions=
smtpd_etrn_restrictions=
smtp_helo_restrictions=

mynetworks=
myhostname=
smtpd_helo_required=yes

# permit_mynetworks
# check_policy_service

# unknown
# reject_unknown_client
# reject_unknown_client_hostname
# reject_unknown_reverse_client_hostname
# reject_unknown_helo_hostname
# reject_unknown_hostname
# reject_unknown_sender_domain
# reject_unknown_recipient_domain 

# hostname 
# reject_unknown_client_hostname
# reject_unknown_reverse_client_hostname
# reject_unknown_hostname
# reject_invalid_hostname
# reject_non_fqdn_hostname
# reject_unknown_helo_hostname

# non_fqdn 
# reject_non_fqdn_hostname
# reject_non_fqdn_sender
# reject_non_fqdn_recipient

# sender
# reject_non_fqdn_sender
# reject_unknown_sender_domain

# recipient
# reject_non_fqdn_recipient
# reject_unknown_recipient_domain

# unauth
# reject_unauth_pipelining
# reject_unauth_destination

Ich sage aber gleich, da muss nichts rein. Die /etc/postfix/main.cf würde sich schon mit folgendem zu Frieden geben:

###################
#
#
###################

Die '#' sind Kommentare, da steht also nichts, auch diese Kommentare müssen nicht rein, da könnte eine leere Datei stehen. Postfix ist bereits vorkonfiguriert - und jede Option, die wir einstellen, stellen speziell wir ein. Das könnte die Sache aber eher schlechter machen, als besser. Generell gilt, solange wir den MX-Record gesetzt haben, eine Ã¶ffentliche IPv4-Adresse haben und einen DNS-Entry, sowie postfix installiert haben und in der /etc/postfix/master.cf, die Ports für postfix entsprechend gesetzt haben, was allerdings bei der installation von postfix, mit apt-get automatisch geschieht, ist unser Mail-Server einsatzfähig.

Wichtig ist eben diese 

/etc/postfix/master.cf

Hier sollte etwas stehen, wie:

==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
#         (yes)   (yes)   (no)   (never)  (100)
# ==========================================================================
smtp       inet  n      -     n     -     -    smtpd
465       inet   n     -     n     -     -     smtpd
#smtp      inet n     -     y     -     1     postscreen
#smtpd     pass -     -     y     -     -     smtpd
#dnsblog    unix -     -     y     -     0     dnsblog
#tlsproxy   unix -     -    y     -    0    tlsproxy
#submission inet n     -     y     -     -     smtpd

Bei der  Intallation von postfix mit 

apt-get install postfix

geschieht das aber automatisch

2.) Diese Master sind generell von entscheidender Bedeutung - steht nichts in der /etc/postfix/main.cf - kein Problem - blos

mynetwork=meinedomain.de

sollte drin stehen - nebenbei: Aber entscheidend sind diese Master!

Die gibt es auch bei dovecot. Hier heißt sie

/etc/dovecot/conf.d/10-master.conf

Also:

/etc/postfix/master.cf
/etc/dovecot/conf.d/10-master.conf

Alles, was bei Mail-Servern Master heißt, enthält die Ports. Bei der Installtion von postfix werden sie normalerweise automatisch gesetzt, bei dovecot nicht. Hier müssen wir sie in der

/etc/dovecot/conf.d/10-master.conf

setzen. Und zwar gibt es Port 110 für POP3 und 143 für IMAP. Dementsprechend müssen wir die Ports setzen, deswegen können sie auch nicht automatisch gesetzt werden, weil es gibt POP3 und IMAP, nebenbei POP3S und IMAPS, 995 und 993

Wenn wir das bei dovecot nicht explizit machen, dann läuft dovecot mit 

service dovecot start

nicht. Wenn wir systemctl | grep dovecot eingeben, erhalten wir ansonsten einen Fehler.

3.) heartbeat tut mit vielen - allen Servern.

In der 

/etc/ha.d/haressources 

steht etwas, wie:

ituenix1 192.168.178.37 apache2

Und auf das apache2 müssen wir achten - wir können auch die anderen Server einbringen:

ituenix1 192.168.178.37 postfix

Also

ituenix1 192.168.178.37 apache2
ituenix1 192.168.178.37 postfix
ituenix1 192.168.178.37 dovecot

Das ist praktisch, wenn wir im Urlaub wollen, dass auch die weiter laufen.
Ich mache das nur aktuell nicht - never touch a running system - und: Ich habe festgestellt, wenn man heartbeat neu startet, also mit

service heartbeat restart

Dann stellt sich oft das Netz vom Server ab. Das muss ich dem jetzt nicht antun.

Was aber auch praktisch ist:

3.2.) Schauen Sie Mal: Sie geben in der

/etc/ha.d/ha.cf etwas an wie

node ituenix1 ituenix2

ucast eth0 192.168.178.37
ucast eth0 192.168.178.28

ping 37.24.242.146

Und das letzte ist interessant. Das steht auch in der /etc/ha.d/ha.cf
Daneben, dass der Rechner abstürzt kann etwas anderes passieren - zum Beispiel, dass die Festplatte auf ein Mal temporär voll ist. In diesem Falle läuft aber apache2 noch - was ich nicht weiß, aber ich kann es mir vorstellen, will es jetzt auch nicht ausprobieren.

In der Fritz!-Box muss man die Ports der Server erst frei schalten.

Also zum Beispiel zu 192.168.178.37 den Port 80, so, dass er von außen mit

http://37.24.242.146:80

erreichbar ist. Durch das ping nehme ich aber an: Die Fritz!-Box lässt sich Ã¼ber das Netz fernsteuern, wenn man es eingeschaltet hat. Gibt man den Port 80 für 192.168.178.37 nicht mehr frei, aber hearbeat prüft 37.24.242.146, könnte es sein, dass heartbeat unmschaltet

4.) Squirrel-Mail. Eines muss man bei Squirrelmail einschalten, nämlich die Attachments.
Dazu braucht man ein Verzeichnis

/var/www/html/attach

Das kann aber auch wo anders liegen. Das muss man in Squirrelmail einschalten.

/var/www/html/squirrelmail/config

Das ist das Programm, zur Konfiguration - und jetzt "General Options" ich glaube (2 oder 4) und dann das Verzeichnis für Attachments einstellen (4 oder 2). Sonst kann Squirrelmail die Attachments nicht hochladen und es kommt:

"Could not move/copy file. File not attached"

als Message, im Squirrel-Mail-Interface.

5.) Es gibt Ã¼brigens noch einen Trick, den wollte ich ursprünglich nicht verraten. Wenn wir postfix so konfiguriert haben, wie ich das jetzt gemacht habe, dann bietet es einen Vorteil: Einloggen nicht Ã¼ber Passwort - "waess?" Werden die Leute fragen, "ohne Passwort", dann kann ja jeder rein - die Antwort lautet - nein, niemand kann rein. Man kann Mails zu einem anderen Server schicken, aber man kann sie nicht von Ã¼berall aus her verschicken. Sondern nur von der lokalen Maschine - "aha", sagen die Leute "nur von der lokalen Maschine - dann kann man also nicht von Ã¼berall aus Mails verschicken?!" - "Falsch!!!" sagt Herr Vajda. Denn es gibt ja Squirrelmail. Squirrelmail ist lustig, weil das ist ein Webmail-Interface - was in die Homepage integriert wird und auf PHP-Basis funktioniert.
Dabei ließt es nicht /var/mail/david direkt aus. Sondern es bedient sich telnet, wie ich auf meiner Homepage tat:

http://www.talkortell.de/newwebmail/webmail5.php

Blos, es läuft auf der lokalen Maschine. Und damit kann es von der lokalen Maschine mittels telnet Mails versenden. Da es aber ein Web-Interface ist, ist es von Ã¼berall aus auf der Welt erreichbar. Es ist eine Seite, die von apache2 angeboten wird, also erreichbar.

Da wir aber jetzt keine Passwörter für unseren postfix benutzen und dovecot auch gleich den Port sperren, kommt niemand jemals auf der Welt in unsere Server rein - es geht nicht - auch, wenn die Leute die Passwörter kennen.
Weil es nicht geht - weil Passwörter nichts nutzen. Doch, es gibt eine Möglichkeit - Ã¼ber Squirrelmail - wenn man das Passwort bei Squirrelmail kennt, kommt man ja rein - ist das ein Nachteil?

Nein, weil, es geht um Robots! Wenn wir nämlich das Web-Interface betrachten, dann brauchen wir einen Robot, für das Web-Interface und das ist für den Hacker schwieriger zu schreiben, als ein Robot, auf der Basis

von telnet und postfix und SMTP

Und wenn man einen robot schreiben würde und das Passwort kennte, könnte man mit telnet viele Mails verschicken. So wie wir das machen, geht es aber nichts, weil passwörter nutzen nichts.

Es gibt einen Nachteil. Man kann eine Mail von david@ituenix.de nach david@ituenix.de schreiben. Das geht mittels

telnet mail.ituenix.de 25
HELO mail.ituenix.de
MAIL FROM:david@ituenix.de
RCPT TO:david@ituenix.de
DATA
Hallo
.
QUIT

Das kann jeder, das kann ich auch. Jeder kann von Herrn Vajda, nach Herrn Vajda schreiben. Dafür braucht man kein Passwort - ich habe so einen Spaßvogel und der sendet mir am Tag ca. 20 Mails. Es geht aber nicht an andere - wenn ich schreibe:

telnet mail.ituenix.de 25
HELO mail.ituenix.de
MAIL FROM:david@ituenix.de
RCPT TO:david.vajda@supra-net.net

Dann meldet telnet, bzw. der SMPT-Server - postfix - relay acces denied. Das ist aber bei jeder Adresse so - jede Mail-Adresse, die nicht meine eigene ist, wird automatisch blockiert. Ein Nachteil: Den benutzer

www-data 

gibt es so nicht. Und wenn man eine Mail schreibt, 

telnet mail.ituenix.de 25
HELO mail.ituenix.de
MAIL FROM:david@ituenix.de
RCPT TO:www-data@ituenix.de
DATA
Hallo
.
QUIT

Dann bleibt sie im Postausgang stecken und blockiert ihn. Wie kriegt man den Postausgang wieder leer? 
Mit 

postsuper -d ALL

Dann ist der Postausgang leer - die Frage stellt sich, was tun im Ausland - ich meine, wenn ich zu Hause bin, kann ich ihn bequem leeren? Einfach ein Bash-Skript schreiben - deswegen gibt es Bash-Programmierung:

#!/bin/bash 
sleep 3m
while [ 1 ]
do
    postsuper -d ALL
    echo "empty"
    sleep 15m
done

Das leert den Postausgang alle 15 Minuten


Und ich weiß nicht, aber für das Scherzkeks, was mir da die ganze Zeit Mails von david@ituenix.de nach david@ituenix.de schickt habe ich mir auch schon einen Trick ausgedacht. Ich schaue einfach nach der IP-Adresse, die in den postfix-Logs enthalten ist und richte ein paar Firewall-Rules ein und sperre sie einfach auf Port 25 vollständig.

Jetzt, tur mir Leid, jetzt sperre ich erst Mal dem seine IP-Adresse zu meinem Server.

So, ich denke, ich habe das Problem gelöst mit dem postfix.
Die IP-Adresse ist zu finden, in

/var/log/mail.log

Ich habe die IP-Adresse für postfix gesperrt - sie ist auch im Netz bei Brute-Force-Attacks gelistet. Sie hat keinen Domain-Namen. Die Region ist bekannt - das kann mit geoiplookup, auf dem eigenen Rechner abfragen - und auch im Netz, wo sie bei Brute-Force-Attacken gelistet ist, steht die Region.

Ich veröffentliche das aber erst in wenigen Tagen.


Jetzt habe ich erst Mal genug gemacht, mit der IP-Adresse.
Nachher lerne ich noch Geographie.
Und ich werde jetzt aber einen Spaziergang machen.

Das stimmt nicht, ich habe es nicht Ã¼ber die Firewall gesperrt, sondern Ã¼ber postfix.


So, jetzt liebe Leute erkläre ich mal etwas Lustiges:

postfix

postfix - im Netz sind quasi nur postfix'e - das Posteingang mit dovecot - den brauchen wir nur, wenn wir nicht am Server sitzen und vom Client Mails aufrufen wollen. Die sind dann aber mit postfix Ã¼bertragen worden. Die werden mit postfix versendet und landen mit postfix auf dem Server. 

Jetzt, in den postfix-Mailserver loggt man sich ein mit

telnet mail.ituenix.de 25
HELO mail.ituenix.de
MAIL FROM:david@ituenix.de
RCPT TO:david@ituenix.de
DATA
Hallo
.
QUIT

So redet sowohl der Client, mit dem wir unserem Server reden, mit unserem Server, als auch unser Server, mit dem "Ziel-Server". Die SMTP-Befehl sind dieselben.

HELO mail.ituenix.de
MAIL FROM:david@ituenix.de
RCPT TO:david@ituenix.de
DATA
Hallo
.
QUIT

D.h., die benutzen sowohl Server, als auch unser Client. Der Unterschied, zwischen dem Ziel-Server und dem Absender ist, das Ziel speichert es in einer Datei - aus der es auch dovecot abrufen kann - und der Sender, versendet es ans Ziel. 

Da, die Befehle aber, identisch sind, nutzen uns Passwort und Benutzernamen nichts. Denn der "Ausgangs"-Server weiß auch nicht das Passwort und den Benutzernamen. Die Befehle für den Ausgang und vom Client zum Ausgang, sind aber dieselben.

Die Frage stellt sich, wozu dann Passwort und Benutzername gut ist? 

Zunächst, das machen wir mit dem Server

sasl

salsauthd

Aber: Das bringt nur dann etwas, wenn wir von Unterwegs Mails versenden wollen, direkt an den Server, mit einer App - wie Outlook oder kmail. Das brauchen wir aber nicht - weil wir können ein Webmail, wie squirrelmail verwenden. Das läuft direkt auf dem Server. Dann können wir uns das Passwort ersparen.

Die Frage ist, was passiert, wenn man eine Mail von 

david@ituenix.de nach david.vajda@supra-net.net 

schickt. Na ja, das hängt davon ab, in welchem Netz wir sind.

Es gibt die Einstellungen:

mynetworks=

und

permit_mynetworks.

Standardmäßig ist sie in der /etc/postfix/main.cf, so gesetzt, dass sie im Lokalen Netz ist.

Gut, Mails können immer rein gehen.

Es können immer Mails an 

david@ituenix.de

gesendet werden - warum? Weil die Server sich von außen einloggen können. Wenn sie das nicht könnten, kriegten wir von bestimmten Servern keine Mails mehr.

Nach außen gehen die Mails nur vom Lokalen Netz. Das heißt unser Netzwerk ist 192.168.178.0/24. Dann gehen die Mails nur dann an david.vajda@supra-net.net, wenn wir in 192.168.178.24/24 sind. An david@ituenix.de gehen sie immer, auch, wenn wir nicht im Lokalen Netz sind, denn jeder Server muss Mails senden können. Das geht mit

telnet mail.ituenix.de 25
HELO mail.ituenix.de
MAIL FROM:david@ituenix.de
RCPT TO:david@ituenix.de
DATA
Hallo
.
QUIT

Und das geht auch aus dem Netz 109.50.4.0/24

Dabei nutzt uns sasl nichts. sasl kann die Verbindung nicht deaktivieren, sonst könnten Server (die unser Passwort nicht kennen) keine Mails mehr an uns schicken.

Die einzigen Möglichkeiten die uns bleiben, sind IP-Adressen sperren und spamassassin (Spam-Filter)

Spam-Filter: spamassassin

spamassassin habe ich installiert - und es funktioniert - es filter Spam raus. Es muss allerdings noch etwas mehr gemacht werden, weil ein Spam-Filter trainiert werden muss, gibt es vorkonfigurierte Pakete, die diese Konfigurationen bereits kennen.


Yeaah! The thing is - I have detected a cybercrime network. But I will not give you any kind of information - because I protect this networking, in thinking of a better. The thing is, I got spam mails from two (three) IP-Adresses. And all are listed, in black lists - deal with attacks. But: They aren't listed in connection. But the mails I get, are the same - from the content. Both addresses are from different countrys all over Europe. And they seem to be intelligent. They speak different languages - they can send the same mail in different languages - German, English. They give informations, that they have connections to Russia. And they always give the same IP-Adress, which isn't in connection, to the real - in the end of the mail. But, so you can see - they are the same - no matter, which country, and no matter, they speak German or English, the Mail is the same, and there is given the same adress, in the end.


Wissen Sie, ich erkläre jetzt mal so viel:

Sie können in der

/etc/postfix/access_client

die sie von Hand erstellen, die kann auch genauso gut

/etc/postfix/access

oder sonst wie heißen, per Hand die IP-Adressen eintragen, die in der 

/var/log/mail.log

enthalten sind und ihnen nicht gefallen. Doch natürlich kann man den Prozess auch automatisieren. Was man per Hand nachschauen und eintragen kann man auch voll automatisch machen.

Und dabei fällt mir auf, alle IP-Adressen mit

unknown[xxx.yyy.zzz.aaa]

will ich nicht haben. Ich habe ein C-Programm geschrieben, was diese alle auflistet, aus der

/var/log/mail.log

Und diese IP-Adressen, werden, wenn sie nicht doppelt sind auf der Standardausgabe angezeigt, mit der Endung " REJECT\n". Dann habe ich ein Bash-Skript geschrieben, was diese Operation alle 5 Minuten ausführt, die /var/log/mail.log wird immer aktualsiert und dann in der

/etc/postfix/access_client

speichert. Dann führt das Bash-Skript, die nötigen Befehle aus, um es für Postfix bekannt zu machen. Also, die verboten-Liste.

und führt am Ende ein 

service postfix restart 

aus. Jetzt gibt es einen Nachteil. Die /var/log/mail.log wird nicht immer länger. Aber einer gewissen Länge, wird der Anfang weggenommen und in einer anderen Datei gespeichert - und es entstehen nicht beliebig viele neue Log-Dateien. Das heißt, die ersten IP-Adressen sind weg. 

Diese sind aber in der

/etc/postfix/access_client

enthalten. Ich habe, das Bash-Skript so geschrieben, dass

cat /etc/postfix/access_client 

+ der neuen Liste, mit IP-Adressen aus /var/log/mail.log

Dann sind die mit cat aneinander gehängt. Jetzt sind doppelte Einträge da.
Ich löse das Problem nicht dem C-Programm, sondern mit dem Bash-Skript.

Ich sortiere, mit sort alle Zeilen

sort

Und das Programm

uniq

entfernt doppelte Zeilen. So bin ich doppelte Einträge los, habe aber die alten IP-Adressen.
antispamrobot.c
antispamrobot2.c
antispamrobot3.c
antispamrobot4.c
antispamrobot4.c

antispam.sh
antispam1.5.sh

/etc/postfix/main.cf


David Vajda
Schickhardtstraße 5
D-72072, Tübingen
+491735807467
david@ituenix.de