W dniu 2020-03-05 o 07:18, LFC pisze:
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...@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=<
glinieck...@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.