Ejecuto Outlook 2010 en una máquina virtual que ejecuta Windows 7. La conexión en red se proporciona a través del host. Outlook se conecta a un servidor Exchange.
Cuando la dirección IP del host cambia (por ejemplo, al mudarse a una red wifi diferente), se interrumpe la conectividad de Outlook. No he investigado en profundidad, pero parece retener obstinadamente una conexión TCP y no iniciar una nueva. La barra de estado en la parte inferior sigue mostrando "Esta carpeta se actualizó por última vez a las <hora>" y no se descargan nuevos correos electrónicos.
Presionar los botones “Actualizar carpeta” o “Enviar/recibir todas las carpetas” no ayuda. Cambiar al modo sin conexión (botón "Trabajar sin conexión") y volver a estar en línea no ayuda.
A veces, finalmente, Outlook se vuelve a conectar. Pero eso lleva minutos u horas.¿Cómo puedo indicarle a Outlook que se vuelva a conectar ahora?
Cerrar Outlook y reiniciarlo funciona, pero es perjudicial. Este problema es específico de la ejecución de Outlook en una máquina virtual, o presumiblemente detrás de una puerta de enlace cuya dirección IP cambia: si la dirección IP de la máquina con Windows cambia, Outlook se vuelve a conectar correctamente.
Respuesta1
No pude encontrar una manera de convencer a Outlook para que se volviera a conectar al servidor, salvo reiniciarlo o deshabilitar y (dolorosamente) volver a habilitar la interfaz de red.
Entonces, lo que hago es desconectar y volver a conectar el cable virtual entre la VM y el host con el siguiente VBoxCableReconnect
script. Por supuesto, el script es específico de VirtualBox, pero espero que sean posibles cosas similares con otras tecnologías de VM.
#! /usr/bin/env perl
use strict;
use warnings;
sub vbox_list {
my %vms;
my ($running) = @_;
my $what = $running ? 'runningvms' : 'vms';
local $ENV{LC_ALL} = 'C';
open VBOX, "VBoxManage list -l $what |" or die 'VBoxManage: $!';
local $/ = "\n\n\n";
while (my $section = <VBOX>) {
my %vm = ();
$section =~ s/\n\n.*//s; # strip shared folders, etc.
foreach my $line (split /\n/, $section) {
$line =~ s/\A([^:]+):\s+// or next;
$vm{$1} = $line;
}
$vms{$vm{UUID}} = {%vm};
}
close VBOX;
return %vms;
}
sub vbox_list_cables {
my ($vms) = @_;
my @cables;
foreach my $vm (values %$vms) {
my %vm = %$vm;
foreach my $key (keys %vm) {
next unless $key =~ /\ANIC *([0-9]+)\z/;
my $num = $1;
if ($vm{$key} =~ /(^|, )Cable connected: on($|, )/) {
push @cables, [$vm{UUID}, $vm{Name}, $num];
}
}
}
return @cables;
}
sub vbox_iterate_cableconnected {
my ($cables, $onoff) = @_;
foreach my $cable (@$cables) {
my ($uuid, $name, $num) = @$cable;
system 'VBoxManage', 'controlvm', $uuid, "setlinkstate$num", $onoff;
# TODO: report errors
}
}
my %vms = vbox_list(1);
my @cables = vbox_list_cables(\%vms);
vbox_iterate_cableconnected(\@cables, 'off');
sleep(1);
vbox_iterate_cableconnected(\@cables, 'on');
Ejecute esto como el usuario que ejecuta la VM cuando abra una interfaz de red en el host.
Respuesta2
Controle y haga clic derecho en el ícono de Outlook junto al reloj y tendrá un nuevo elemento de menú llamado "Estado de la conexión" donde podrá volver a conectarse mucho más rápido que cualquier otro método.