🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.mail.mta
Article #62729

Re: dodatkowy serwer pocztowy

#62729
From: Piotr Lechowicz
Date: Thu, 05 Mar 2020 21:50
151 lines
6365 bytes
W dniu 2020-03-05 o 07:18, LFC pisze:
> W dniu 03.03.2020 o 16:03, Piotr Lechowicz pisze:
> 
>> Informacyjnie: mam taką konfigurację z sendmailem jako MTA (tylko bez sa).
>>
> 
> Podzielisz się jakimś HowTo, bo w sieci nie udało mi się znaleźć tego typu opisu, który mógłbym zaimplementować na Centosie 6.
> 
> 
> LFC

Nie mam gotowca.
System mamy identyczny, więc konfigi wklejam "na żywca" (pomijam oczywiste oczywistości).

Generalnie konfiguracja opiera się o Dovecota z bazą userów w MySQL.

I. Od strony sendmaila:

1. uwierzytelnianie w MSA przy wysyłaniu idzie standardowo przez sasla:

[]# cat /etc/sasl2/Sendmail.conf
pwcheck_method:saslauthd

który jest skonfigurowany do odpytywania dovecota przez imap:

[]# cat /etc/sysconfig/saslauthd
MECH=rimap
FLAGS="-c -O 127.0.0.1"

2. LDA - dodałem nowy mailer:

[]# cat /usr/share/sendmail-cf/mailer/dovecot.m4
# 4 virtual mail users
Mdovecot,      P=/usr/bin/sudo,
                F=l59DFMPn,
                S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
                M=51200000,
                U=virtmail:virtmail,
                T=DNS/RFC822/X-Unix,
                A=/usr/bin/sudo /usr/libexec/dovecot/dovecot-lda -d $u

dopisany w /etc/mail/sendmail.mc:

MAILER(smtp)dnl
MAILER(dovecot)dnl

i uruchamiany z poziomu mailertable:

example.pl         dovecot:dovecot


Tak to działa:
- przy przychodzącej wiadomości do nieistniejącego usera

Mar  2 16:08:40 sendmail[392]: 022F8YF7000392: from=<horacio.parodi@grupomap.com.ar>, proto=ESMTP, daemon=MTA, relay=zfish.mxout.godns.net [76.74.198.66]
Mar  2 16:08:41 dovecot: auth: mysql: Connected to /var/lib/mysql/mysql.sock
Mar  2 16:08:41 dovecot: auth: sql(kulaga.marian): unknown user
Mar  2 16:08:41 sendmail[396]: 022F8YF7000392: to=<gliniecki.norbert@example.pl>, delay=00:00:01, xdelay=00:00:00, mailer=dovecot, pri=122973, relay=dovecot, dsn=5.1.1, stat=User unknown
Mar  2 16:08:42 sendmail[396]: 022F8YF7000392: 022F8gF6000396: DSN: User unknown

Tu jest dodatkowy narzut w postaci DSNa zamiast odrzucania maila bezpośrednio w sesji SMTP.
Jeszcze nie analizowałem jak to usprawnić.

- przy wysyłaniu z próbą autoryzacji danymi nieistniejącego usera

Mar  2 16:13:15 dovecot: auth: mysql: Connected to /var/lib/mysql/mysql.sock
Mar  2 16:13:15 dovecot: auth: sql(gliniecki.norbert,127.0.0.1): unknown user
Mar  2 16:13:20 dovecot: imap-login: Disconnected (auth failed, 1 attempts): user=<gliniecki.norbert>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured
Mar  2 16:13:20 saslauthd[7498]: do_auth         : auth failure: [user=gliniecki.norbert] [service=smtp] [realm=example.pl] [mech=rimap] [reason=remote server rejected your credentials]
Mar  2 16:13:20 sendmail[485]: 022FD9D1000485: ppp78-36-115-222.pppoe.komi.dslavangard.ru [78.36.115.222] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA



II. Od strony Dovecota

1. widoczny w definicji mailera user virtmail to zwykły user systemowy z prawem 700 do folderu /home/virtmail z mailboxami

[]# cat /etc/passwd|grep virtmail
virtmail:x:1000:1000:4 mail virtual users:/home/virtmail:/sbin/nologin

2. /etc/dovecot/conf/10-auth.conf

auth_username_format = %Ln
auth_mechanisms = plain login
passdb {
   driver = sql
   args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
   driver = static
   args = uid=1000 gid=1000 home=/home/virtmail/%d/%n
}

Jak widać struktura folderów ma układ /home/virtmail/domena/user - to mój wybór, tu jest pełna dowolność na etapie wyboru konfiguracji.


3. /etc/dovecot/conf/10-mail.conf

mail_location = maildir:~/Maildir
mail_privileged_group = mail
first_valid_uid = 100
first_valid_gid = 100
mail_uid = 100
mail_gid = 100
mbox_write_locks = fcntl


4. użyty w 10-auth.conf skrypt:

driver = mysql
connect = host=/var/lib/mysql/mysql.sock dbname=xxx user=yyy password=zzz

password_query = SELECT userid AS username, domain, password  FROM users WHERE userid = '%n' or userid = ( select userid from aliases where alias = '%n' )
user_query = SELECT home, uid, gid FROM users WHERE userid = '%n' or userid = ( select userid from aliases where alias = '%n' )

# For using doveadm -A:
iterate_query = SELECT userid AS username, domain FROM users



III. Od strony bazy:

CREATE TABLE `users` (
   `userid` varchar(128) NOT NULL,
   `domain` varchar(128) NOT NULL,
   `password` varchar(256) NOT NULL,
   `home` varchar(255) NOT NULL,
   `uid` int(11) NOT NULL,
   `gid` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `aliases` (
   `id` int(11) NOT NULL,
   `alias` varchar(128) NOT NULL,
   `domain` varchar(128) NOT NULL,
   `userid` varchar(128) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Hasła w bazie są w formacie Dovecota {schema}$typ$salt$hash, np:
{MD5-CRYPT}$1$xxxxxxxx$yyyyyyyyyyyyyyy
Można je łatwo generować:
[]# doveadm pw -s md5-crypt
Większość haseł mam w SHA512-CRYPT z typem $6$ - od Centos 6.4 (chyba) wszedł jako domyślny systemowy i hasła z kont systemowych można było przenieść do bazy 1:1.

W bazie mam osobno userid i domenę - redefiniując zapytania do bazy i konfig mailera można łatwo zmienić format loginów na userid@domena



To tak na szybko.
Cała reszta konfiguracji sendmail/dovecot/miltry/roundcube raczej bez zmian.
Technical Details
Message-ID: <5e617422$0$525$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <n432jg-1ec.ln1@mpwik1.mpwikzdw.com.pl> <5e5e71ba$0$31099$65785112@news.neostrada.pl> <37i6jg-brd.ln1@mpwik1.mpwikzdw.com.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: dodatkowy serwer pocztowy
Newsgroups: pl.comp.mail.mta
References: <n432jg-1ec.ln1@mpwik1.mpwikzdw.com.pl> <5e5e71ba$0$31099$65785112@news.neostrada.pl> <37i6jg-brd.ln1@mpwik1.mpwikzdw.com.pl>
From: Piotr Lechowicz <edithkal@gmail.com>
Date: Thu, 5 Mar 2020 22:50:25 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.4.2
MIME-Version: 1.0
In-Reply-To: <37i6jg-brd.ln1@mpwik1.mpwikzdw.com.pl>
Lines: 153
Message-ID: <5e617422$0$525$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 79.188.53.188
X-Trace: 1583445026 unt-rea-b-01.news.neostrada.pl 525 79.188.53.188:53887
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit