Article delegate-en/2097 of [1-5169] on the server localhost:119
  upper oldest olders older1 this newer1 newers latest
search
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
[Reference:<_A2091@delegate-en.ML_>]
Newsgroups: mail-lists.delegate-en

[DeleGate-En] Re: IMAP filter EXPUNGE
29 Jan 2003 08:32:20 GMT feedback@delegate.org (Yutaka Sato)


On 01/28/03(07:45) you "Paul Rinear" <pfmeabdyi-uqy4d4wkjhjr.ml@ml.delegate.org> wrote
in <_A2091@delegate-en.ML_>
 |I am trying to use Delegate to remove the EXPUNGE command from clients sending to server. The idea here is company policy wants to leave all mail on server and not allow user to permanently delete.
 |
 |I use:
 |
 |delegated -P143 SERVER=IMAP://mail:1443 ADMIN=postmaster@freedomweb.. PERMIT="*:*:*" FTOSV="noexp.cfi"
 |
 |to start the server. I have tried both FFROMCL and FTOSV using various Rule-name with sed to remove EXPUNGE command, but nothing seems to work. My gut feeling is that the method I am using cannot touch the actual command stream.
 |
 |Is what I want to do possible?

You can do it by replacing "tag EXPUNGE ..." command "XECHO tag NO ..."
with FFROMCL filter.
But I think such access control should be supported by DeleGate itself
and I'll do it like enclosed patch.  With the patched DeleGate you can
reject EXPUNGE command with the following parameter.

  REJECT=imap//EXPUNGE

Cheers,
Yutaka
--
  @ @ Yutaka Sato <y.sato@delegate.org> http://www.delegate.org/y.sato/
 ( - ) National Institute of Advanced Industrial Science and Technology (AIST)
_<   >_ 1-1-4 Umezono, Tsukuba, Ibaraki, 305-8568 Japan
Do the more with the less -- B. Fuller

diff -c ../delegate8.3.3/src/imap.c ./imap.c
*** ../delegate8.3.3/src/imap.c	Sat Sep  7 17:13:51 2002
--- ./imap.c	Wed Jan 29 17:11:19 2003
***************
*** 128,133 ****
--- 128,139 ----
  			sv1log("C: %s %s %s ****\n",qtag,qcmd,qarg);
  		}else	sv1log("C: %s",req);
  
+ 		if( method_permitted(Conn,"imap",qcmd) == 0 ){
+ 			fprintf(tc,"%s NO %s\r\n",qtag,qcmd);
+ 			fflush(tc);
+ 			continue;
+ 		}
+ 
  		if( ts == NULL ){
  			if( strcaseeq(qcmd,"XECHO") ){
  				while( *ap == ' ' || *ap == '\t' )
diff -c ../delegate8.3.3/src/service.c ./service.c
*** ../delegate8.3.3/src/service.c	Fri Dec 20 01:50:50 2002
--- ./service.c	Wed Jan 29 17:10:00 2003
***************
*** 245,250 ****
--- 245,255 ----
  	else	strcpy(protomethod,proto);
  	acceptable = DELEGATE_permit(Conn,protomethod,DST_HOST,DST_PORT,
  			shost,sport,serviceport(proto));
+ 	if( acceptable ){
+ 		if( DELEGATE_reject(Conn,protomethod,DST_HOST,DST_PORT,
+ 			shost,sport,serviceport(proto)) )
+ 				acceptable = 0;
+ 	}
  	HL_popClientInfo();
  	return acceptable;
  }

  admin search upper oldest olders older1 this newer1 newers latest
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
@_@V