45 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Mail Monitoring
							 | 
						||
| 
								 | 
							
								===============
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Rattail has a basic "Mail Monitoring" (mailmon) service which can
							 | 
						||
| 
								 | 
							
								watch an IMAP folder, and perform actions on any messages which
							 | 
						||
| 
								 | 
							
								appear.  
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note that one of those actions, presumably the last, should be to
							 | 
						||
| 
								 | 
							
								*move* the message into a different IMAP folder, or perhaps delete it
							 | 
						||
| 
								 | 
							
								outright.  This is to avoid re-processing the same message over and
							 | 
						||
| 
								 | 
							
								over.  The IMAP folder being watched is essentially treated as a
							 | 
						||
| 
								 | 
							
								"queue" and everything in it will be processed.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Example config for this looks something like (in ``mailmon.conf``):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.. code-block:: ini
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   [rattail.mailmon]
							 | 
						||
| 
								 | 
							
								   monitor = myfolder
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   myfolder.imap.server = mail.example.com
							 | 
						||
| 
								 | 
							
								   myfolder.imap.username = myuser
							 | 
						||
| 
								 | 
							
								   myfolder.imap.password = mypass
							 | 
						||
| 
								 | 
							
								   myfolder.imap.folder = INBOX.Incoming-Messages
							 | 
						||
| 
								 | 
							
								   myfolder.actions = download, move
							 | 
						||
| 
								 | 
							
								   myfolder.action.download.func = rattail.mailmon.actions:download_message
							 | 
						||
| 
								 | 
							
								   myfolder.action.download.args = /srv/envs/poser/app/work/mailmon/myfolder
							 | 
						||
| 
								 | 
							
								   myfolder.action.download.kwarg.locking = true
							 | 
						||
| 
								 | 
							
								   myfolder.action.move.func = rattail.mailmon.actions:move_message
							 | 
						||
| 
								 | 
							
								   myfolder.action.move.args = INBOX.Processed-Messages
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In the above example we are watching the "Incoming-Messages" folder,
							 | 
						||
| 
								 | 
							
								which is a subfolder of the INBOX itself.  Any messages which appear
							 | 
						||
| 
								 | 
							
								there will be downloaded to local file system, and then moved to the
							 | 
						||
| 
								 | 
							
								"Processed-Messages" IMAP folder on the server.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Running the command is usually done via supervisor (so as to make it
							 | 
						||
| 
								 | 
							
								behave as a proper service), but the command line itself looks like:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.. code-block:: sh
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   cd /srv/envs/poser
							 | 
						||
| 
								 | 
							
								   sudo -u rattail bin/rattail -c app/mailmon.conf mailmon start
							 |