From 51c6772a1c4fe9e4099d115f6bb63731b9fdeba0 Mon Sep 17 00:00:00 2001 From: "Jean-Marc Pigeon (Delson)" Date: Fri, 27 Jun 2025 10:23:24 -0400 Subject: [PATCH] Added the lock flag with database emails table --- lib/devsql.c | 4 ++++ lib/lvleml.c | 8 +++++++- lib/unieml.h | 1 + lib/unisql.h | 1 + sql/Makefile | 16 +++++++++++++--- sql/mailleur.sql | 4 +++- 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/lib/devsql.c b/lib/devsql.c index 7ecc6f8..837d364 100644 --- a/lib/devsql.c +++ b/lib/devsql.c @@ -40,6 +40,7 @@ const char *usrfield[]={ "passwd", "space", "mxspace", + "lock", (char *)0 }; @@ -316,6 +317,9 @@ while (proceed==true) { case 3 : //user max space available usr->mxspace=atoi(locval); break; + case 4 : //lock status + usr->lock=atoi(locval); + break; default : (void) rou_alert(0,"%s field <%s> not used (Bug?)",OPEP,usrfield[i]); break; diff --git a/lib/lvleml.c b/lib/lvleml.c index 0f1cc22..509e135 100644 --- a/lib/lvleml.c +++ b/lib/lvleml.c @@ -284,7 +284,13 @@ while (proceed==true) { phase=999; //No user found in database } break; - case 1 : //user is existing + case 1 : //is user lock? + if (usr->lock==1) { + (void) transmit(contact,true,"%d 5.6.6 <%s> account lock",EXPIRED,rcptto); + phase=999; //No user found in database + } + break; + case 2 : //user is existing isok=true; break; default : //SAFE Guard diff --git a/lib/unieml.h b/lib/unieml.h index d391976..ba17294 100644 --- a/lib/unieml.h +++ b/lib/unieml.h @@ -22,6 +22,7 @@ #define CMDBAD 502 //command not implemented #define BADSEQ 503 //out of sequence command #define DATRJC 521 //Data Rejected +#define EXPIRED 536 //Contract date expired #define REJECT 550 //E-mail/domain rejected #define UKNUSER 551 //Unknown user #define MALABRT 552 //email data rejected diff --git a/lib/unisql.h b/lib/unisql.h index d830c65..273319e 100644 --- a/lib/unisql.h +++ b/lib/unisql.h @@ -20,6 +20,7 @@ typedef enum { typedef struct { char *email; //user emails char *passwd; //user password + u_int lock; //account is lock u_long space; //user space used u_long mxspace; //user maximun space }USRTYP; diff --git a/sql/Makefile b/sql/Makefile index 7e1ca5b..6668308 100644 --- a/sql/Makefile +++ b/sql/Makefile @@ -24,8 +24,12 @@ mailleur.mysql \ dbmysql : mailleur.mysql @ - ( \ - echo "CREATE USER `id -un`@localhost;"; \ - echo "GRANT ALL PRIVILEGES ON mailleur.* to `id -un`@localhost;";\ + echo "CREATE USER `id -un`@localhost;"; \ + echo "CREATE USER apache@localhost;"; \ + echo "CREATE USER dovecot@localhost;"; \ + echo "GRANT ALL ON mailleur.* \ + TO `id -un`@localhost \ + WITH GRANT OPTION;"; \ echo "FLUSH PRIVILEGES;"; \ echo "CREATE DATABASE mailleur;"; \ ) | sudo mariadb -q @@ -37,11 +41,15 @@ dbmysql : mailleur.mysql ndbmysql: @-( \ echo "DROP DATABASE mailleur;"; \ + echo "DROP USER dovecot@localhost;"; \ + echo "DROP USER apache@localhost;"; \ echo "DROP USER `id -un`@localhost;"; \ ) | sudo mariadb dbpostg : mailleur.postg @-( \ + echo "CREATE ROLE apache WITH LOGIN;"; \ + echo "CREATE ROLE dovecot WITH LOGIN;"; \ echo "create database mailleur;" \ ) | psql -q -U postgres template1 @ cat mailleur.postg | psql -q mailleur; @@ -50,7 +58,9 @@ dbpostg : mailleur.postg ndbpostg: @-( \ - echo "drop database mailleur;" \ + echo "drop database mailleur;"; \ + echo "DROP ROLE apache;"; \ + echo "DROP ROLE dovecot;"; \ ) | psql -q -U postgres template1 #-------------------------------------------------------------------- diff --git a/sql/mailleur.sql b/sql/mailleur.sql index 3df5cb8..51a6bc5 100644 --- a/sql/mailleur.sql +++ b/sql/mailleur.sql @@ -55,7 +55,9 @@ CREATE TABLE emails ( space INTEGER //space used by user email DFLT 0, mxspace INTEGER //Maximun space available - DFLT 20000 //to user (20 Gig). + DFLT 20000, //to user (20 Gig). + locked INTEGER //The account is locked out + DFLT 0 ); GRANT SELECT,INSERT,UPDATE,DELETE ON emails TO mailapache; GRANT SELECT ON emails TO maildove; -- 2.47.3