I've been trying to figure out how to setup perdition with mysql and proxy gmail, but have not had any luck! 


I read this post, http://permalink.gmane.org/gmane.mail.perdition.user/1721, which leads to believe its possible.

perdition 1.18
 cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.1 LTS"




Here's the error's I see, which makes me think its not looking up mysql db correctly.

Apr 24 12:31:22 desktop perdition[4517]: Connect: 127.0.0.1->127.0.0.1
Apr 24 12:31:22 desktop perdition[4517]: SSL connection using AES256-SHA
Apr 24 12:31:22 desktop perdition[4517]: username_add_domain: username_add_domain 1 1
Apr 24 12:31:22 desktop perdition[4517]: getserver: do_dbserver_get
Apr 24 12:31:25 desktop perdition[4517]: Auth: 127.0.0.1->127.0.0.1 user="megamind@webeclouding.com" passwd="XXXXXXX" server="(null)" port="993" status="failed: Could not determine server"
Apr 24 12:31:25 skytap-desktop perdition[4517]: token_read: token_fill_buffer
Apr 24 12:31:25 skytap-desktop perdition[4517]: read_line: token_read
Apr 24 12:31:25 skytap-desktop perdition[4517]: imap4_in_get_pw: read_imap4_line 1
Apr 24 12:31:25 skytap-desktop perdition[4517]: main: protocol->in_get_pw
Apr 24 12:31:25 skytap-desktop perdition[4517]: Fatal Error reading authentication information from client 127.0.0.1->127.0.0.1: Exiting child


Perdition.conf



desktop:~# cat /etc/perdition/perdition.conf
######################################################################
# perdition.conf
# A|add_domain STATE[,STATE...][,STRIP_DEPTH]:
# Appends a domain to the USER based on the IP address connected to in
# given state(s).
# (default "")
#A servername_lookup,1
add_domain servername_lookup,1

# a|authenticate_in:
# User is authenticated by perdition before connection to real-server.
#a
#authenticate_in

# B|no_bind_banner:
#  Use uname to generate banner of even if bind_address is in effect.
#B
#no_bind_banner

# b|bind_address SERVER[,SERVER...]
# Bind to these addresses and ports.
# (default "")
#b 127.0.0.1
#bind_address 127.0.0.1

# C|connection_logging:
# Log all comminication recieved from end-users or real servers or sent
# from perdition.
# Note: debug must be in effect for this option to take effect.
#C
#connection_logging

# connect_relog SECONDS:
# How often to relog the connection.
# Zero for no relogging.
# (default 300)
#connect_relog 300

# c|client_server_specification:
# Allow end-user to specify the real-server.
#c
#client_server_specification

# D|domain_delimiter STRING:
# Delimiter between username and domain.
# (default "@")
#D @
#domain_delimiter \#

# d|debug:
# Turn on verbose debuging.
#d
debug

# e|explicit_domain STRING
# With -A, use STRING as the default domain rather than deriving
# from the IP address connected to.
#explicit_domain some.domain

# F|log_facility FACILITY:
# Facility to log to.
# (default "mail")
#F mail
#log_facility /dev/null

# g|group GROUP:
# Group to run as. 
# (default "nobody")
#g nobody
#group nobody

# I|capability|pop_capability|imap_capability STRING:
# Capabilities for the protocol.
#I IMAP4 IMAP4REV1 LITERAL+
#I IMAP4 IMAP4REV1
imap_capability IMAP4

# i|inetd_mode: 
# Run in inetd mode.
#i
#inetd_mode

# L|connection_limit LIMIT:
# Maximum number of connections to accept simultaneously. A value of zero
# sets no limit on the number of simultaneous connections.
# (default 0)
#L 64
#connection_limit 64

# l|listen_port PORT_NUMBER|PORT_NAME:
# Port to listen on. 
# (default "protocol dependent")
#l 110
#listen_port 110

# login_disabled
# Do not allow users to log in.
#login_disabled

# log_passwd STATE
# Log the users password, otherwise just report it as "XXXXXX".
# (default "never")
#log_passwd never
#log_passwd fail
#log_passwd ok
log_passwd always


# lower_case STATE[,STATE...]:
# Convert usernames to lower case according the the locale in given
# state(s). 
# (default "")
#lower_case servername_lookup

# M|map_library FILENAME:
# Library to open that provides functions to look up the server for a user.
# M /usr/lib/libperditiondb_gdbm.so.0
map_library /usr/lib/libperditiondb_gdbm.so.0
map_library_opt "localhost:3306:dbPerdition:tblPerdition:perdition:perdition"

# m|map_library_opt STRING:
# String option for the map_library.
# (default "")
#m ""
#map_library_opt "/etc/perdition/perdition_lookup.gdbm.db"

# no_daemon:
# Do not detach from terminal. 
#no_daemon

# n|no_lookup
# Disable host and port lookup.
#n
#no_lookup

# O|ok_line
# Use STRING as the OK line to send to the client.
# Overriden by server_ok_line.
#O You are so in
ok_line Access Granted

# server_ok_line:
# This option is depricated and now has the same effect as o|server_resp_line
# It may be removed in a future release

# o|server_resp_line:
# If authentication with the back-end server is successful then send the
# servers +OK line to the client, instead of generting one.
#o
#server_resp_line

# P|protocol PROTOCOL:
# Protocol to use 
# (default "POP3")
#P POP3
#protocol POP3

# p|outgoing_port PORT_NAME|PORT_NUMBER:
# Default real-server port.
# (default "protocol dependent")
#p 110
outgoing_port 993

# s|outgoing_server: SERVER[,SERVER...]
# Default server(s).
# (default "")
#s  sarah:110,locahost
#outgoing_server  sarah:110,localhost
#outgoing_server  sarah:110
#outgoing_server  sarah

# pid_file FILENAME
# Path for pidfile. Must be a full path starting with a '/'.
# To allow perdition to remove the pid file after the owner of
# the perdition process is changed to a non-root user, it is advised to
# specify a pid file in a subdirectory of the system var state directory
# (usually /var/run).  This subdirectory should be unique to this perdition
# invocation and will be created and have its owner and permitions set to
# allow perdition to subsequently remove the pid file.  
# Empty for no pid file. Not used in inetd mode.
# default <var_state_dir>/<basename>/<basename>.pid
#pid_file /var/run/perdition/perdition.pid
#pid_file /var/run/perdition.pop3/perdition.pop3.pid
#pid_file /var/run/perdition.pop3s/perdition.pop3s.pid
#pid_file /var/run/perdition.imap4/perdition.imap4.pid
#pid_file /var/run/perdition.imap4s/perdition.imap4s.pid

# S|strip_domain: STATE[,STATE...]
# Allow domain portion of username to be striped in given state(s)
# (default "")
#S all
#strip_domain servername_lookup

# t|timeout SECONDS:
# Idle timeout. Zero for infinite timeout.
# (default 1800)
#t 1800
#timeout 1800

# u|username USERNAME:
# User to run as.
# (default "nobody")
#u nobody
#username nobody

# U|username_from_database:
# Substitute username from popmap lookup.
#U
#username_from_database

# q|quiet:
# Only log errors. Overriden by debug.
#q
#quiet

# query_key FORMAT[,FORMAT...]:
# Speficy a list of query strings to search for in the popmap.
#query_key \\U
#query_key \\u,\\D\\d
#query_key \\I
#query_key \\u\\da_domain,\\da_domain


######################################################################
# Options below relate to SSL/TLS support.
# They are not available if perdition is compiled without SSL support.
######################################################################

# ssl_mode MODE[,MODE ...]::
# Use SSL and or TLS for the listening and/or outgoing connections.
ssl_mode ssl_listen
#ssl_mode tls_listen_force

# ssl_ca_chain_file:
# Chain file containing Certificate Authorities to use when 
# verifying certificates. Overrides ssl_ca_file and ssl_ca_path
# (default "")
#ssl_ca_chain_file /etc/perdition/perdition.ca.pem

# ssl_ca_file FILENAME:
# File containing Certificate Authorities to use when verifying certificates.
# When building the Certificate Authorities chain, ssl_ca_file is used
# first, if set, and then ssl_ca_path, if set.
# (default "")
#(recommended location "/etc/perdition/perdition.ca.pem")
#ssl_ca_file /etc/perdition/perdition.ca.pem

# ssl_ca_path PATHNAME:
# Derectory containing Certificate Authorities files to use when verifying 
# certificates. 
# When building the Certificate Authorities chain, ssl_ca_file is used
# first, if set, and then ssl_ca_path, if set.
# (default "/etc/perdition/perdition.ca/")
#ssl_ca_path /etc/perdition/perdition.ca/

# ssl_ca_accept_self_signed:
# Accept self-signed certificates.
#ssl_ca_accept_self_signed

# ssl_cert_file FILENAME:
# Certificate chain to use when listening for SSL or TLS connections.
# (default "/etc/perdition/perdition.crt.pem")
#ssl_cert_file /etc/perdition/perdition.crt.pem

# ssl_cert_accept_self_signed:
# Accept self-signed certificates.
#ssl_cert_accept_self_signed

# ssl_cert_accept_expired:
# Accept expired certificates. This includes server certificates
# and certificats authority certificates.
#ssl_cert_accept_expired

# ssl_cert_accept_not_yet_valid:
# Accept certificates that are not yet valid. This includes server
# certificates and certificats authority certificates.
#ssl_cert_accept_not_yet_valid

# ssl_cert_verify_depth DEPTH:
# Chain Depth to recurse to when vierifying certificates.
# (default 9)
#ssl_cert_verify_depth 9

# ssl_key_file FILENAME:
# Public key to use when listening for SSL or TLS connections.
# (default "/etc/perdition/perdition.key.pem")
#ssl_key_file /etc/perdition/perdition.key.pem

# ssl_listen_ciphers STRING:
# Cipher list when listening for SSL or TLS connections.
# If empty ("") then openssl's default will be used.
# (default "")
#ssl_listen_ciphers "ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH"

# ssl_outgoing_ciphers STRING:
# Cipher list when making outgoing SSL or TLS connections.
# If empty ("") then openssl's default will be used.
# (default "")
#ssl_outgoing_ciphers "ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH"

# ssl_no_cert_verify:
# Don't cryptographically verify the real-server's certificate.
ssl_no_cert_verify

# ssl_no_cn_verify:
# Don't verify the real-server's common name with the name used
# to connect to the server.
ssl_no_cn_verify


MYSQL dB:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 101
Server version: 5.1.41-3ubuntu12.10 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dbPerdition        |
+--------------------+
2 rows in set (0.00 sec)

mysql> use dbPerdition;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed


mysql> select * from tblPerdition;
+---------------------------+----------------+------+
| user                      | servername     | port |
+---------------------------+----------------+------+
| cindy@webeclouding.com    | imap.gmail.com | 993  |
| megamind@webeclouding.com | imap.gmail.com | 993  |
+---------------------------+----------------+------+
2 rows in set (0.00 sec)

mysql>