Suponemos que nuestra cuenta ssh está configurada como dice en Unix account setup.

Referencias:

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}/bin

Ahora 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_libs

Ahora 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}

InstalaciónDeDadaMailEnDreamHost (última edición 2008-01-29 14:14:49 efectuada por localhost)

Edit and actions menu

  • Página inmutable
  • Información
  • Adjuntos