Tabla de Contenidos
Suponemos que nuestra cuenta ssh está configurada como dice en Unix account setup.
Referencias:
Instalación simple: http://mojo.skazat.com/installation/
Instalación avanzada (la que usamos): http://mojo.skazat.com/purchase/sample_chapter-dada_mail_setup.html
Tabla de Contenidos
variables de entorno
export DADA_CGI=<donde instalar el cgi - visible desde la web>
export DADA_FILES=<directorio para archivos de datos - NO visible desde la web>
export DADA_VERS=<numero de version de la version que vamos a instalar de dadamail>
export DADA_URL=<url completo que apunta al mail.cgi - eg: http://www.example.org/dada/mail.cgi>
export DADA_PWD=<la password del administrador de dada (hay que inventarla)>
export DADA_DB=<nombre de la base de datos>
export DADA_DB_HOST=<server donde esta la base de datos>
export DADA_DB_PORT=<port de la base de datos (mysql: 3306, Postgres: 5432)>
export DADA_DB_TYPE=<'mysql' ó 'Pg' (PostgreSQL)>
export DADA_DB_USER=<usuario de la base de datos>
export DADA_DB_PWD=<password de la base de datos>
export DADA_FILEVERS=`(echo ${DADA_VERS} | sed -e 's/\./_/g')`
download
cd ${HOME}/soft
wget http://internap.dl.sourceforge.net/sourceforge/mojomail/dada-${DADA_FILEVERS}.tar.gz
tar xvfz dada-${DADA_FILEVERS}.tar.gz
mv dada dada-${DADA_FILEVERS}
instalar
cd ${HOME}/soft/dada-${DADA_FILEVERS}
# creamos directorios
mkdir -pv ${DADA_CGI} ${DADA_FILES}
for subdir in lists logs conf templates archives backups tmp
do
mkdir -pv ${DADA_FILES}/${subdir}
done
# copiamos el cgi al directorio destino con el
# modo correcto (-rwxr--r-- == 0744)
install -vm 0744 mail.cgi ${DADA_CGI}
# copiamos el subdirectorio DADA como subdirectorio
# de donde instalamos el cgi
cp -rpv DADA ${DADA_CGI}
# copiamos la documentación
cp -rpv extras/documentation ${DADA_CGI}
# y agregamos un .htaccess porque el apache
# de DreamHost parece que intenta ejecutar
# los archivos que terminan en .pl.html:
cat >> ${DADA_CGI}/documentation/.htaccess <<eof
AddHandler default-handler .html
eof
configurar
Hay que crear la base de datos desde el panel (https://panel.dreamhost.com/index.cgi?tree=goodies.mysql) y anotar los datos (server, usuario, clave, etc).
# creamos las tablas en la base de datos:
mysql -u ${DADA_DB_USER} -p${DADA_DB_PWD} -h ${DADA_DB_HOST} ${DADA_DB} <<EOF
CREATE TABLE IF NOT EXISTS dada_subscribers (
email_id int4 not null primary key auto_increment,
email text,
list text,
list_type text,
list_status char(1)
);
CREATE TABLE IF NOT EXISTS dada_archives (
list varchar(32),
archive_id varchar(32),
subject text,
message mediumtext,
format text,
raw_msg mediumtext
);
CREATE TABLE IF NOT EXISTS dada_settings (
list text,
setting text,
value text
);
CREATE TABLE IF NOT EXISTS dada_sessions (
id CHAR(32) NOT NULL PRIMARY KEY,
a_session TEXT NOT NULL
);
EOF
# creamos un archivo de configuración externo
cat >${DADA_FILES}/conf/.dada_config <<EOF
my \$DIR = '${DADA_FILES}';
#---------------------------------------------------------------------#
\$PROGRAM_URL = '${DADA_URL}';
\$PROGRAM_ROOT_PASSWORD = '${DADA_PWD}';
\$MAILPROG = "/usr/sbin/sendmail";
#---------------------------------------------------------------------#
\$FILES = \$DIR . '/lists';
\$TEMPLATES = \$DIR . '/templates';
\$TMP = \$DIR . '/tmp';
\$BACKUPS = \$DIR . '/backups';
\$ARCHIVES = \$DIR . '/archives';
\$LOGS = \$DIR . '/logs';
#---------------------------------------------------------------------#
use POSIX;
my \$YMD = POSIX::strftime("%Y-%m-%d", localtime);
# The log rotates daily
\$PROGRAM_USAGE_LOG = \$LOGS . '/dada_usage.' . \$YMD . '.log';
#---------------------------------------------------------------------#
#---------------------------------------------------------------------#
\$SUBSCRIBER_DB_TYPE='MySQL';
\$ARCHIVE_DB_TYPE='MySQL';
\$SETTINGS_DB_TYPE='MySQL';
\$SESSION_DB_TYPE='MySQL';
#---------------------------------------------------------------------#
%SQL_PARAMS = (
database => '${DADA_DB}',
dbserver => '${DADA_DB_HOST}',
port => '${DADA_DB_PORT}',
dbtype => '${DADA_DB_TYPE}',
user => '${DADA_DB_USER}',
pass => '${DADA_DB_PWD}',
subscriber_table => 'dada_subscribers',
archives_table => 'dada_archives',
settings_table => 'dada_settings',
session_table => 'dada_sessions',
);
#---------------------------------------------------------------------#
EOF
# modificamos el Config.pm para que apunte al directorio donde
# está el archivo de configuración que acabamos de crear
sed -i.ORI.${DADA_VERS} -e \
"s#\$PROGRAM_CONFIG_FILE_DIR = undef;#\$PROGRAM_CONFIG_FILE_DIR = \'${DADA_FILES}/conf\';#" \
${DADA_CGI}/DADA/Config.pm
ejecutar
cargar en un browser el URL que apunte a mail.cgi: (e.g. http://www.example.org/dada/mail.cgi), aceptar la GPL y 'no spam' y poner la clave de root.
scripts adicionales
bounce handler (mystery girl)
Documentación: http://mojo.skazat.com/support/documentation-dada-2_10_15/dada_bounce_handler.pl.html
Copiamos el script a un directorio en el path y lo hacemos ejecutable:
install -vm 0744 plugins/dada_bounce_handler.pl ${RUN}/binAhora hay que configurar (editando a mano) la lista de paths donde debe encontrar las cosas (no podemos hacerlo con las variables de entorno clásicas porque tiene que poder correr también via cron).
Preparemos un archivo auxiliar:
echo "use lib qw(" >/tmp/my_dada_libs
echo $DADA_CGI >>/tmp/my_dada_libs
echo $DADA_CGI/DADA/perllib >>/tmp/my_dada_libs
perl -e 'print join("\n",@INC)."\n";' >>/tmp/my_dada_libs
sed -i.BAK -e '$s/.*/);/' /tmp/my_dada_libsAhora editar en el archivo ${RUN}/bin/dada_bounce_handler.pl las líneas que tienen esta pinta:
#Change! the lib paths use lib qw( ../ ../DADA ../DADA/perllib /home/account/www/cgi-bin/dada /home/account/www/cgi-bin/dada/DADA /home/account/www/cgi-bin/dada/DADA/perllib /usr/local/lib/perl5/site_perl/5.8.0/mach /usr/local/lib/perl5/site_perl/5.8.0 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.8.0/BSDPAN /usr/local/lib/perl5/5.8.0/mach /usr/local/lib/perl5/5.8.0 );
por las líneas que acabamos de dejar en /tmp/my_dada_libs
Para ejecutar el script a mano se puede usar:
DADA_MAIL_SERVER=<nombre del servidor de mail donde están los rebotes>
DADA_MAIL_USERNAME=<cuenta de mail que recibe los rebotes>
DADA_MAIL_PASSWORD=<password POP3 de esa cuenta de mail>
dada_bounce_handler.pl --test pop3 --server ${DADA_MAIL_SERVER} \
--username ${DADA_MAIL_USERNAME} --password ${DADA_MAIL_PASSWORD}
.