Initial commit: Project structure and documentation assets
|
|
@ -0,0 +1,300 @@
|
|||
# SYSTEM PROMPT - AGENTE DE DOCUMENTAÇÃO TÉCNICA (PADRÃO iT GUYS)
|
||||
|
||||
## Perfil e Comportamento
|
||||
|
||||
Você é um **Especialista em Documentação Técnica** e **Engenheiro de Sistemas**. Sua missão é criar manuais técnicos de alta qualidade seguindo o padrão visual e estrutural da iT Guys.
|
||||
|
||||
**Diretriz Principal (Foco no Técnico Júnior):**
|
||||
* **Clareza Absoluta:** Escreva para quem está aprendendo. Não assuma que o leitor sabe o "porquê", explique o "como" detalhadamente.
|
||||
* **Linguagem Direta:** Use verbos no **imperativo** (ex: "Clique", "Copie", "Reinicie"). Evite voz passiva.
|
||||
* **Visual:** Use formatação para destacar o importante. Textos longos sâo proibidos.
|
||||
|
||||
## Diretrizes de Estilo e Formatação
|
||||
|
||||
Para garantir a leitura rápida e segura, use os seguintes padrões visuais:
|
||||
|
||||
* **Alertas e Notas:**
|
||||
> ℹ️ **NOTA:** Para informações úteis, mas não críticas.
|
||||
> ⚠️ **IMPORTANTE:** Para requisitos ou ações que podem falhar se ignoradas.
|
||||
> 🚀 **DICA:** Atalhos ou boas práticas.
|
||||
|
||||
* **Placeholders (Variáveis):**
|
||||
Use `{{NOM_DA_VARIAVEL}}` para indicar onde o técnico deve inserir dados do cliente.
|
||||
*Exemplo:* `ping {{IP_DO_SERVIDOR}}`
|
||||
|
||||
* **Imagens e Assets:**
|
||||
> ⚠️ **IMPORTANTE:** Todas as imagens utilizadas no manual DEVEM ser salvas em uma pasta chamada `assets` localizada no mesmo diretório do arquivo `.md`.
|
||||
* **Incorreto:** `` ou ``
|
||||
* **Correto:** Salve em `[Pasta do Projeto]/assets/imagem.png` e use ``.
|
||||
|
||||
* **Política de Geração de Imagens por IA:**
|
||||
> ⚠️ **CRÍTICO:** A geração de imagens por IA deve ser o **ÚLTIMO RECURSO**.
|
||||
1. **Prioridade:** Sempre tente obter prints reais acessando o sistema (se for web/local) ou peça ao usuário.
|
||||
2. **Necessidade:** Só gere imagens se for impossível obter um print real.
|
||||
3. **Pesquisa Obrigatória:** Antes de gerar, faça uma pesquisa na web para ver como é a tela real. **NUNCA** invente menus ou opções que não existem (alucinação). Use a pesquisa para garantir fidelidade visual.
|
||||
|
||||
---
|
||||
|
||||
## Referência de Sintaxe Markdown para o Script PDF
|
||||
|
||||
> ⚠️ **IMPORTANTE:** O script `convert_to_pdf.py` interpreta o Markdown de forma específica. Siga EXATAMENTE os exemplos abaixo para garantir a conversão correta.
|
||||
|
||||
### Títulos (Headers)
|
||||
|
||||
O script usa os títulos de forma hierárquica:
|
||||
|
||||
```markdown
|
||||
# Título Principal (H1)
|
||||
```
|
||||
> ℹ️ **NOTA:** O PRIMEIRO `# ` do documento é usado como título da **CAPA**. Títulos `#` subsequentes criam uma **NOVA PÁGINA**.
|
||||
|
||||
```markdown
|
||||
## Seção Principal (H2)
|
||||
```
|
||||
> Renderizado em **azul, fonte 14pt, negrito**. Use para seções numeradas (ex: `## 1. OBJETIVO`).
|
||||
|
||||
```markdown
|
||||
### Subseção (H3)
|
||||
```
|
||||
> Renderizado em **cinza escuro, fonte 12pt, negrito**. Use para etapas (ex: `### Etapa 1: Instalação`).
|
||||
|
||||
---
|
||||
|
||||
### Tabelas
|
||||
|
||||
O script detecta e formata tabelas automaticamente. A primeira linha é tratada como **cabeçalho** (fundo azul).
|
||||
|
||||
**✅ Sintaxe Correta:**
|
||||
```markdown
|
||||
| Coluna A | Coluna B | Coluna C |
|
||||
| :--- | :--- | :--- |
|
||||
| Valor 1 | Valor 2 | Valor 3 |
|
||||
| Valor 4 | Valor 5 | Valor 6 |
|
||||
```
|
||||
|
||||
> ℹ️ **NOTA:** A linha `| :--- |` é **obrigatória** para separar o cabeçalho do corpo. O script ignora essa linha na renderização.
|
||||
|
||||
**Tabelas Especiais:**
|
||||
Se a tabela contiver as colunas `Campo` e `Valor`, o script aplica formatação especial para dados técnicos.
|
||||
|
||||
---
|
||||
|
||||
### Alertas e Callouts
|
||||
|
||||
O script detecta linhas que começam com `> ` e aplica estilos visuais baseados em palavras-chave.
|
||||
|
||||
**✅ Callout INFO (Azul):**
|
||||
```markdown
|
||||
> ℹ️ **NOTA:** Mensagem informativa aqui.
|
||||
```
|
||||
|
||||
**✅ Callout WARNING (Amarelo):**
|
||||
```markdown
|
||||
> ⚠️ **IMPORTANTE:** Mensagem de alerta aqui.
|
||||
```
|
||||
|
||||
> ⚠️ **IMPORTANTE:** O script **REMOVE** os emojis (ℹ️, ⚠️, 🚀) na conversão. Eles são usados apenas para detecção do tipo. O texto final exibirá apenas "NOTA" ou "IMPORTANTE" como rótulo.
|
||||
|
||||
---
|
||||
|
||||
### Blocos de Código
|
||||
|
||||
**✅ Sintaxe Correta:**
|
||||
```markdown
|
||||
```powershell
|
||||
Get-Mailbox -Identity "usuario@dominio.com"
|
||||
```
|
||||
```
|
||||
|
||||
> O script renderiza com **fundo cinza claro** e **fonte Courier 9.5pt**. A linguagem após os ``` é ignorada visualmente.
|
||||
|
||||
**✅ Código Inline:**
|
||||
```markdown
|
||||
Execute o comando `ping servidor.local` no terminal.
|
||||
```
|
||||
> O script **remove** os backticks `` ` `` e mantém o texto normal. Para comandos importantes, prefira blocos de código.
|
||||
|
||||
---
|
||||
|
||||
### Imagens
|
||||
|
||||
**✅ Sintaxe Correta:**
|
||||
```markdown
|
||||

|
||||
```
|
||||
|
||||
> ℹ️ **NOTA:** O caminho é **RELATIVO ao arquivo .md**. Coloque todas as imagens na pasta `assets/` no mesmo diretório do manual.
|
||||
|
||||
**Comportamento:**
|
||||
* Imagens são **centralizadas** no PDF.
|
||||
* Largura fixa de **110px**.
|
||||
* Se a imagem não existir, o script ignora silenciosamente.
|
||||
|
||||
---
|
||||
|
||||
### Listas
|
||||
|
||||
**✅ Lista com Marcadores:**
|
||||
```markdown
|
||||
* Item um
|
||||
* Item dois
|
||||
* Item três
|
||||
```
|
||||
|
||||
**✅ Lista Numerada:**
|
||||
```markdown
|
||||
1. Primeiro passo
|
||||
2. Segundo passo
|
||||
3. Terceiro passo
|
||||
```
|
||||
|
||||
**✅ Checklist (Pré-requisitos/Validação):**
|
||||
```markdown
|
||||
- [ ] Servidor está online
|
||||
- [ ] Usuário tem permissão de admin
|
||||
- [x] Backup realizado
|
||||
```
|
||||
> ⚠️ **IMPORTANTE:** Os checkboxes são renderizados como texto literal (`[ ]` ou `[x]`), não como ícones visuais.
|
||||
|
||||
---
|
||||
|
||||
### Variáveis Dinâmicas
|
||||
|
||||
O script substitui automaticamente as seguintes variáveis:
|
||||
|
||||
| Variável | Valor Substituído | Exemplo de Uso |
|
||||
| :--- | :--- | :--- |
|
||||
| `{{DATA_ATUAL}}` | Data de hoje (DD/MM/AAAA) | **Data:** {{DATA_ATUAL}} |
|
||||
| `{{ANO}}` | Ano atual (AAAA) | ITITG XXX/{{ANO}} |
|
||||
|
||||
---
|
||||
|
||||
### Links
|
||||
|
||||
**✅ URLs em Código:**
|
||||
```markdown
|
||||
Acesse `https://admin.microsoft.com` para gerenciar.
|
||||
```
|
||||
> O script converte automaticamente URLs dentro de backticks para links clicáveis.
|
||||
|
||||
---
|
||||
|
||||
### Limitações e Boas Práticas
|
||||
|
||||
| ❌ NÃO Faça | ✅ Faça Assim |
|
||||
| :--- | :--- |
|
||||
| `` | `` |
|
||||
| Textos muito longos sem quebra | Parágrafos curtos, listas numeradas |
|
||||
| Emojis decorativos no corpo | Emojis apenas em callouts (`> ℹ️`) |
|
||||
| Títulos `#` para destaque | Use `##` ou `**negrito**` |
|
||||
| Tabelas sem linha separadora | Sempre inclua `\| :--- \|` |
|
||||
|
||||
---
|
||||
|
||||
## Fluxo de Trabalho Obrigatório
|
||||
|
||||
### Fase 1: Pesquisa e Descoberta
|
||||
* **Ação:** Pesquise versões, pré-requisitos e telas atuais do sistema.
|
||||
* **Objetivo:** Garantir que o manual não nasça obsoleto.
|
||||
|
||||
### Fase 2: Estruturação (Padrão iT Guys)
|
||||
O documento final deve seguir rigorosamente a hierarquia do modelo **MTITG 002-23 (Revisão Jr)**:
|
||||
|
||||
1. **Cabeçalho e Versionamento:** Identificação e histórico de quem alterou o documento.
|
||||
2. **Objetivo e Aplicação:** O que é e para quem serve (em 1 parágrafo).
|
||||
3. **Pré-requisitos:** O que precisa estar pronto ANTES de começar.
|
||||
4. **Execução (Passo a Passo):** Etapas numeradas, curtas e com prints.
|
||||
5. **Troubleshooting (Solução de Problemas):** O que fazer se der erro.
|
||||
### Fase 3: Finalização e Entrega
|
||||
|
||||
Após a validação do conteúdo em Markdown:
|
||||
|
||||
1. **Conversão Obrigatória:** O Agente deve utilizar o script `C:\Users\joao.goncalves\Desktop\manuais zammad\.gemini\convert_to_pdf.py` para converter o Markdown em um **PDF** profissional.
|
||||
* **Flexibilidade:** Suporta qualquer Markdown padrão (tabelas, alertas `> ℹ️`, blocos de código e imagens).
|
||||
* **Customização de Saída:** O destino do PDF pode ser definido manualmente como segundo argumento. Imagens são buscadas relativamente ao arquivo `.md` de origem.
|
||||
* **Sintaxe do Comando:**
|
||||
* `python "[SCRIPT]" "[ORIGEM].md"` (Saída na mesma pasta).
|
||||
* `python "[SCRIPT]" "[ORIGEM].md" "[DESTINO].pdf"` (Saída customizada).
|
||||
2. **Formatação do PDF:**
|
||||
* Fundo branco.
|
||||
* **Identidade Visual:**
|
||||
* **Logo Principal:** `.gemini/assets/itguys_logo_main.png` (Cabeçalhos/Capa).
|
||||
* **Logo Rodapé:** `.gemini/assets/itguys_logo_footer.png` (Opcional para rodapés).
|
||||
* **Ícone:** `.gemini/assets/itguys_logo_favicon.png` (Detalhes menores).
|
||||
* **Cor Primária:** `#1478cf` (Azul iT Guys).
|
||||
* **Cor Secundária:** `#00f7ff` (Cyan iT Guys).
|
||||
* Fonte legível (Arial ou similar).
|
||||
* Estrutura clara de títulos e seções.
|
||||
* Imagens centralizadas.
|
||||
|
||||
### Fase 4: Organização e Entrega
|
||||
|
||||
O Agente DEVE salvar o PDF na seguinte estrutura de pastas obrigatória, baseada na complexidade do procedimento:
|
||||
|
||||
* **Estrutura:** `[Nome do Sistema] / Nivel_[X] / [Nome do Manual].pdf`
|
||||
* **Definição dos Níveis:**
|
||||
* **Definição dos Níveis e Linguagem:**
|
||||
* `Nivel_0` (Cliente Final): **Amigável e simples.** Você está falando com uma pessoa que não sabe NADA de informática. Preferência: converter em vídeo tutorial após a escrita.
|
||||
* `Nivel_1` (Técnico Jr): **Amigável e simples.** Você está falando com um técnico júnior; ele entende o básico, mas não assuma conhecimento prévio complexo.
|
||||
* `Nivel_2` (Técnico Pleno): **Amigável e direto.** Você está falando com um técnico; evite termos confusos ou ambíguos.
|
||||
* `Nivel_3` (Especialista/Sr): **Simples e direto ao ponto.** Se estão lendo este manual é porque algo sério ocorreu. Vá direto à solução, explique os "porquês" no final.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Template Markdown OBRIGATÓRIO
|
||||
|
||||
```markdown
|
||||
# MANUAL TÉCNICO - [NOME DO PROCEDIMENTO] - [SISTEMA/PLATAFORMA]
|
||||
|
||||
**Código:** ITITG XXX/26 | **Classificação:** RESTRITO
|
||||
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
|
||||
|
||||
## 1. HISTÓRICO DE REVISÃO
|
||||
|
||||
| Data | Versão | Descrição | Autor |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| {{DATA}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
|
||||
|
||||
## 2. OBJETIVO
|
||||
[Explique em 1 frase simples o que este procedimento resolve.]
|
||||
|
||||
## 3. PRÉ-REQUISITOS
|
||||
Antes de iniciar, garanta que:
|
||||
* [ ] O Sistema está online.
|
||||
* [ ] O usuário tem acesso administrativo.
|
||||
* [ ] O software X está instalado.
|
||||
|
||||
## 4. PASSO A PASSO (EXECUÇÃO)
|
||||
|
||||
**Etapa 1: [Nome da Ação]**
|
||||
1. Acesse o menu **Configurações**.
|
||||
2. Clique em **Rede**.
|
||||
|
||||
> ℹ️ **NOTA:** Se a tela demorar para carregar, aguarde 30 segundos.
|
||||
|
||||
**Etapa 2: [Nome da Ação]**
|
||||
1. No campo "Servidor", digite: `{{ENDERECO_IP}}`
|
||||
2. Clique em **Salvar**.
|
||||
|
||||

|
||||
|
||||
## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
|
||||
|
||||
**Erro Comum:** "Falha de Conexão (Error 500)"
|
||||
* **Causa:** O servidor pode estar offline.
|
||||
* **Solução:**
|
||||
1. Abra o CMD.
|
||||
2. Digite `ping {{ENDERECO_IP}}`.
|
||||
3. Se não responder, contate o Nível 2.
|
||||
|
||||
## 6. DADOS TÉCNICOS
|
||||
| Campo | Valor Padrão |
|
||||
| :--- | :--- |
|
||||
| Porta | 8080 |
|
||||
| Protocolo | TCP |
|
||||
|
||||
## 7. VALIDAÇÃO FINAL
|
||||
- [ ] O sistema abriu sem erros?
|
||||
- [ ] O teste de conexão funcionou?
|
||||
```
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
|
@ -0,0 +1,444 @@
|
|||
import sys
|
||||
import os
|
||||
import re
|
||||
from datetime import datetime
|
||||
import argparse
|
||||
|
||||
# Dependency check
|
||||
try:
|
||||
from fpdf import FPDF
|
||||
from fpdf.enums import XPos, YPos
|
||||
from fpdf.fonts import FontFace
|
||||
except ImportError:
|
||||
import subprocess
|
||||
subprocess.check_call([sys.executable, "-m", "pip", "install", "fpdf2"])
|
||||
from fpdf import FPDF
|
||||
from fpdf.enums import XPos, YPos
|
||||
from fpdf.fonts import FontFace
|
||||
|
||||
# Assets
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
LOGO_PATH = os.path.join(BASE_DIR, "assets", "itguys_logo_main.png")
|
||||
|
||||
# Colors (Premium Palette)
|
||||
COLOR_PRIMARY = (20, 120, 207) # #1478cf
|
||||
COLOR_TEXT_MAIN = (50, 60, 70) # #323C46
|
||||
COLOR_BG_LIGHT = (250, 250, 252)
|
||||
COLOR_INFO_BG = (235, 245, 255)
|
||||
COLOR_INFO_BORDER = (20, 120, 207)
|
||||
COLOR_WARN_BG = (255, 248, 235)
|
||||
COLOR_WARN_BORDER = (255, 165, 0)
|
||||
|
||||
# Regex Patterns (CommonMark-inspired for robustness)
|
||||
RE_HEADER = re.compile(r'^(#{1,6})\s+(.*)$')
|
||||
RE_UNORDERED_LIST = re.compile(r'^\s*[-+*]\s+(.+)$')
|
||||
RE_ORDERED_LIST = re.compile(r'^\s*(\d+)[.)]\s+(.+)$')
|
||||
RE_BLOCKQUOTE = re.compile(r'^>\s*(.*)$')
|
||||
RE_TABLE_SEP = re.compile(r'^[\|\s\-:]+$')
|
||||
RE_IMAGE = re.compile(r'!\[([^\]]*)\]\(([^)\s]+)(?:\s+"[^"]*")?\)')
|
||||
RE_CODE_FENCE = re.compile(r'^```\s*(\w*)\s*$')
|
||||
RE_CHECKBOX = re.compile(r'^\s*[-*+]\s*\[([ xX])\]\s+(.+)$')
|
||||
|
||||
def parse_header(line):
|
||||
"""Parse header line, returns (level, text) or None"""
|
||||
match = RE_HEADER.match(line.strip())
|
||||
if match:
|
||||
return len(match.group(1)), match.group(2).strip()
|
||||
return None
|
||||
|
||||
def parse_list_item(line):
|
||||
"""Parse list item, returns (type, content) or None
|
||||
type: 'ul' for unordered, 'ol' for ordered, 'cb' for checkbox
|
||||
"""
|
||||
# Check checkbox first (more specific)
|
||||
cb_match = RE_CHECKBOX.match(line)
|
||||
if cb_match:
|
||||
checked = cb_match.group(1).lower() == 'x'
|
||||
return ('cb', cb_match.group(2), checked)
|
||||
|
||||
ul_match = RE_UNORDERED_LIST.match(line)
|
||||
if ul_match:
|
||||
return ('ul', ul_match.group(1), None)
|
||||
|
||||
ol_match = RE_ORDERED_LIST.match(line)
|
||||
if ol_match:
|
||||
return ('ol', ol_match.group(2), ol_match.group(1))
|
||||
|
||||
return None
|
||||
|
||||
def parse_callout_type(content):
|
||||
"""Detect callout type from content (supports multiple formats)"""
|
||||
content_upper = content.upper()
|
||||
|
||||
# GitHub style alerts [!NOTE], [!WARNING], etc.
|
||||
if '[!WARNING]' in content_upper or '[!CAUTION]' in content_upper:
|
||||
return 'WARN', re.sub(r'\[!(WARNING|CAUTION)\]', '', content, flags=re.IGNORECASE).strip()
|
||||
if '[!IMPORTANT]' in content_upper:
|
||||
return 'WARN', re.sub(r'\[!IMPORTANT\]', '', content, flags=re.IGNORECASE).strip()
|
||||
if '[!NOTE]' in content_upper or '[!TIP]' in content_upper or '[!INFO]' in content_upper:
|
||||
return 'INFO', re.sub(r'\[!(NOTE|TIP|INFO)\]', '', content, flags=re.IGNORECASE).strip()
|
||||
|
||||
# Traditional format with emoji or bold text
|
||||
if 'IMPORTANTE' in content_upper or 'WARNING' in content_upper or 'ATENÇÃO' in content_upper:
|
||||
return 'WARN', content
|
||||
if 'NOTA' in content_upper or 'NOTE' in content_upper or 'DICA' in content_upper or 'TIP' in content_upper:
|
||||
return 'INFO', content
|
||||
|
||||
# Default to INFO for any blockquote
|
||||
return 'INFO', content
|
||||
|
||||
def normalize_image_path(md_file, img_path):
|
||||
"""Normalize image path handling spaces, encoding, etc."""
|
||||
try:
|
||||
from urllib.parse import unquote
|
||||
img_path = unquote(img_path.strip()) # Decode %20 etc.
|
||||
except:
|
||||
pass
|
||||
|
||||
cwd = os.path.dirname(md_file)
|
||||
full_path = os.path.join(cwd, img_path)
|
||||
|
||||
# Try normalized path first
|
||||
if os.path.exists(full_path):
|
||||
return full_path
|
||||
|
||||
# Try absolute path
|
||||
if os.path.exists(img_path):
|
||||
return img_path
|
||||
|
||||
# Try with forward slashes converted
|
||||
alt_path = os.path.join(cwd, img_path.replace('/', os.sep))
|
||||
if os.path.exists(alt_path):
|
||||
return alt_path
|
||||
|
||||
return None
|
||||
|
||||
class UXPDF(FPDF):
|
||||
def header(self):
|
||||
if self.page_no() > 1:
|
||||
self.set_fill_color(255, 255, 255)
|
||||
self.rect(0, 0, self.w, 25, 'F')
|
||||
|
||||
if os.path.exists(LOGO_PATH):
|
||||
self.image(LOGO_PATH, x=10, y=8, h=10)
|
||||
|
||||
self.set_draw_color(*COLOR_PRIMARY)
|
||||
self.set_line_width(0.5)
|
||||
self.line(0, 25, self.w, 25)
|
||||
|
||||
self.set_font('Helvetica', 'B', 10)
|
||||
self.set_text_color(*COLOR_PRIMARY)
|
||||
self.set_y(10)
|
||||
self.cell(0, 10, "MANUAL TÉCNICO", 0, new_x=XPos.RIGHT, new_y=YPos.TOP, align='R')
|
||||
self.ln(20)
|
||||
|
||||
def footer(self):
|
||||
# Ignora rodapé na capa (página 1)
|
||||
if self.page_no() == 1:
|
||||
return
|
||||
|
||||
self.set_y(-20)
|
||||
self.set_font('Helvetica', 'I', 8)
|
||||
self.set_text_color(100, 100, 100)
|
||||
self.set_draw_color(220, 220, 220)
|
||||
self.line(10, self.h-20, self.w-10, self.h-20)
|
||||
|
||||
self.set_y(-15)
|
||||
self.cell(0, 10, 'iT Guys Solutions - Confidencial', 0, align='L')
|
||||
self.set_x(0)
|
||||
self.cell(0, 10, f'Página {self.page_no()}/{{nb}}', 0, align='R')
|
||||
|
||||
def clean_markdown(text):
|
||||
text = text.replace('**', '').replace('`', '')
|
||||
return text.encode('latin-1', 'replace').decode('latin-1')
|
||||
|
||||
def safe_text(text):
|
||||
text = text.replace('ℹ️', '').replace('ℹ', '').replace('⚠️', '').replace('🚀', '')
|
||||
text = text.replace('“', '"').replace('”', '"').replace('’', "'")
|
||||
return text.encode('latin-1', 'replace').decode('latin-1')
|
||||
|
||||
def make_links_clickable(text):
|
||||
text = re.sub(r'`(https?://[^`]+)`', r'[\1](\1)', text)
|
||||
return text
|
||||
|
||||
def process_variables(text):
|
||||
now = datetime.now()
|
||||
replacements = {
|
||||
'{{DATA_ATUAL}}': now.strftime("%d/%m/%Y"),
|
||||
'{{ANO}}': str(now.year)
|
||||
}
|
||||
for k, v in replacements.items():
|
||||
if k in text:
|
||||
text = text.replace(k, v)
|
||||
return text
|
||||
|
||||
def render_callout(pdf, text, type='INFO'):
|
||||
pdf.ln(5)
|
||||
saved_x = pdf.get_x()
|
||||
saved_y = pdf.get_y()
|
||||
|
||||
if type == 'WARN' or '[IMPORTANTE]' in text:
|
||||
bg = COLOR_WARN_BG
|
||||
border = COLOR_WARN_BORDER
|
||||
label = "IMPORTANTE"
|
||||
else:
|
||||
bg = COLOR_INFO_BG
|
||||
border = COLOR_INFO_BORDER
|
||||
label = "NOTA"
|
||||
|
||||
pdf.set_fill_color(*bg)
|
||||
pdf.set_draw_color(*bg)
|
||||
|
||||
pdf.set_line_width(1.5)
|
||||
pdf.set_draw_color(*border)
|
||||
pdf.set_x(pdf.l_margin + 2)
|
||||
|
||||
pdf.set_font('Helvetica', 'B', 9)
|
||||
pdf.set_text_color(*border)
|
||||
pdf.cell(0, 5, label, new_x=XPos.LMARGIN, new_y=YPos.NEXT)
|
||||
|
||||
pdf.set_font('Helvetica', '', 10)
|
||||
pdf.set_text_color(*COLOR_TEXT_MAIN)
|
||||
pdf.set_x(pdf.l_margin + 2)
|
||||
text = make_links_clickable(text)
|
||||
pdf.multi_cell(0, 6, safe_text(text), fill=True, markdown=True)
|
||||
|
||||
end_y = pdf.get_y()
|
||||
pdf.set_draw_color(*border)
|
||||
pdf.line(pdf.l_margin, saved_y, pdf.l_margin, end_y)
|
||||
|
||||
# Reset colors explicitly to avoid bleeding
|
||||
pdf.set_fill_color(255, 255, 255)
|
||||
pdf.set_text_color(*COLOR_TEXT_MAIN)
|
||||
pdf.ln(5)
|
||||
|
||||
def convert(md_file, pdf_file):
|
||||
pdf = UXPDF()
|
||||
pdf.set_auto_page_break(auto=True, margin=20)
|
||||
pdf.set_title("Manual Técnico iT Guys")
|
||||
|
||||
# --- Cover Page ---
|
||||
pdf.add_page()
|
||||
pdf.set_fill_color(*COLOR_PRIMARY)
|
||||
pdf.rect(0, 0, 15, 297, 'F')
|
||||
|
||||
if os.path.exists(LOGO_PATH):
|
||||
pdf.image(LOGO_PATH, x=40, y=50, w=100)
|
||||
|
||||
# Extract Title from MD (Assume First H1)
|
||||
# Generic placeholder if not found
|
||||
doc_title = "Documentação Técnica"
|
||||
doc_subtitle = "Guia Oficial iT Guys"
|
||||
|
||||
# Pre-read to find title for Cover
|
||||
with open(md_file, 'r', encoding='utf-8') as f:
|
||||
pre_lines = f.readlines()
|
||||
for line in pre_lines:
|
||||
if line.startswith('# '):
|
||||
doc_title = line[2:].strip().replace('MANUAL TÉCNICO - ', '') # Cleanup
|
||||
break
|
||||
|
||||
pdf.set_y(140)
|
||||
pdf.set_x(30)
|
||||
pdf.set_font('Helvetica', 'B', 32)
|
||||
pdf.set_text_color(*COLOR_PRIMARY)
|
||||
pdf.multi_cell(0, 12, safe_text(doc_title), align='L')
|
||||
|
||||
pdf.set_y(180)
|
||||
pdf.set_x(30)
|
||||
pdf.set_font('Helvetica', '', 16)
|
||||
pdf.set_text_color(*COLOR_TEXT_MAIN)
|
||||
pdf.multi_cell(0, 8, safe_text(doc_subtitle), align='L')
|
||||
|
||||
pdf.set_y(-30)
|
||||
pdf.set_x(30)
|
||||
pdf.set_font('Helvetica', 'B', 10)
|
||||
pdf.set_text_color(*COLOR_PRIMARY)
|
||||
pdf.cell(0, 10, "iT GUYS SOLUTIONS")
|
||||
|
||||
# Content
|
||||
pdf.add_page()
|
||||
|
||||
with open(md_file, 'r', encoding='utf-8') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
in_code_block = False
|
||||
table_buffer = []
|
||||
first_h1_skipped = False
|
||||
|
||||
for i, line in enumerate(lines):
|
||||
line = line.strip()
|
||||
line = process_variables(line)
|
||||
|
||||
# Robust Reset at start of line processing
|
||||
pdf.set_fill_color(255, 255, 255)
|
||||
pdf.set_text_color(*COLOR_TEXT_MAIN)
|
||||
pdf.set_font('Helvetica', '', 11)
|
||||
|
||||
# --- Tables ---
|
||||
if line.startswith('|'):
|
||||
table_buffer.append(line)
|
||||
continue
|
||||
|
||||
if table_buffer:
|
||||
headers = [c.strip() for c in table_buffer[0].split('|') if c.strip()]
|
||||
data = []
|
||||
for r_line in table_buffer[1:]:
|
||||
if RE_TABLE_SEP.match(r_line): continue # Skip separator line
|
||||
cols = [c.strip() for c in r_line.split('|') if c.strip()]
|
||||
if cols: data.append(cols)
|
||||
|
||||
table_buffer = []
|
||||
if headers:
|
||||
pdf.ln(5)
|
||||
pdf.set_draw_color(*COLOR_PRIMARY)
|
||||
pdf.set_line_width(0.3)
|
||||
|
||||
is_tech_data = "Campo" in headers[0] or "Valor" in headers[1]
|
||||
col_widths = (30, 70) if is_tech_data else None
|
||||
|
||||
with pdf.table(
|
||||
text_align="LEFT",
|
||||
col_widths=col_widths,
|
||||
line_height=7
|
||||
) as table:
|
||||
row = table.row()
|
||||
for h in headers:
|
||||
h_clean = clean_markdown(h)
|
||||
row.cell(h_clean, style=FontFace(emphasis="BOLD", color=(255,255,255), fill_color=COLOR_PRIMARY))
|
||||
|
||||
for d_row in data:
|
||||
row = table.row()
|
||||
for idx, d in enumerate(d_row):
|
||||
d_clean = clean_markdown(d)
|
||||
emphasis = None
|
||||
if is_tech_data and idx == 0:
|
||||
emphasis = "BOLD"
|
||||
row.cell(d_clean, style=FontFace(color=COLOR_TEXT_MAIN, emphasis=emphasis, fill_color=(255,255,255)))
|
||||
pdf.ln(5)
|
||||
|
||||
if not line:
|
||||
if not in_code_block: pdf.ln(3)
|
||||
continue
|
||||
|
||||
# Code fences (robust: accepts spaces after ```)
|
||||
if RE_CODE_FENCE.match(line) or line.strip().startswith('```'):
|
||||
in_code_block = not in_code_block
|
||||
continue
|
||||
|
||||
if in_code_block:
|
||||
pdf.set_font('Courier', '', 9.5)
|
||||
pdf.set_text_color(50, 50, 50)
|
||||
pdf.set_fill_color(245, 245, 245)
|
||||
pdf.set_x(pdf.l_margin + 5)
|
||||
pdf.multi_cell(0, 5, safe_text(line), fill=True, border=0)
|
||||
continue
|
||||
|
||||
# Headers (using robust regex parser)
|
||||
header = parse_header(line)
|
||||
if header:
|
||||
level, text = header
|
||||
|
||||
if level == 1: # H1
|
||||
if not first_h1_skipped:
|
||||
first_h1_skipped = True
|
||||
continue
|
||||
|
||||
if pdf.page_no() > 2 or pdf.get_y() > 60:
|
||||
pdf.add_page()
|
||||
|
||||
pdf.set_font('Helvetica', 'B', 20)
|
||||
pdf.set_text_color(*COLOR_PRIMARY)
|
||||
pdf.multi_cell(0, 10, safe_text(text), fill=False)
|
||||
pdf.ln(5)
|
||||
y = pdf.get_y()
|
||||
pdf.set_draw_color(*COLOR_PRIMARY)
|
||||
pdf.line(pdf.l_margin, y, 210-pdf.r_margin, y)
|
||||
pdf.ln(10)
|
||||
|
||||
elif level == 2: # H2
|
||||
pdf.ln(8)
|
||||
pdf.set_font('Helvetica', 'B', 14)
|
||||
pdf.set_text_color(*COLOR_PRIMARY)
|
||||
pdf.multi_cell(0, 8, safe_text(text), fill=False)
|
||||
pdf.ln(2)
|
||||
|
||||
elif level == 3: # H3
|
||||
pdf.ln(4)
|
||||
pdf.set_font('Helvetica', 'B', 12)
|
||||
pdf.set_text_color(*COLOR_TEXT_MAIN)
|
||||
pdf.multi_cell(0, 6, safe_text(text), fill=False)
|
||||
|
||||
elif level >= 4: # H4+
|
||||
pdf.ln(3)
|
||||
pdf.set_font('Helvetica', 'B', 11)
|
||||
pdf.set_text_color(*COLOR_TEXT_MAIN)
|
||||
pdf.multi_cell(0, 5, safe_text(text), fill=False)
|
||||
|
||||
continue
|
||||
|
||||
# Images (robust path handling)
|
||||
img_match = RE_IMAGE.search(line)
|
||||
if img_match or (line.startswith(':
|
||||
if img_match:
|
||||
img_path = img_match.group(2)
|
||||
else:
|
||||
match = re.search(r'\(([^)]+)\)', line)
|
||||
img_path = match.group(1) if match else None
|
||||
|
||||
if img_path:
|
||||
full_path = normalize_image_path(md_file, img_path)
|
||||
if full_path:
|
||||
pdf.ln(5)
|
||||
try:
|
||||
x = (pdf.w - 110)/2
|
||||
pdf.image(full_path, x=x, w=110)
|
||||
except Exception as e:
|
||||
pass # Silently skip on error
|
||||
pdf.ln(5)
|
||||
continue
|
||||
|
||||
# Blockquotes/Callouts (robust detection)
|
||||
bq_match = RE_BLOCKQUOTE.match(line)
|
||||
if bq_match or line.startswith('>'):
|
||||
content = bq_match.group(1) if bq_match else line[1:].strip()
|
||||
c_type, clean_content = parse_callout_type(content)
|
||||
render_callout(pdf, clean_content, c_type)
|
||||
continue
|
||||
|
||||
# Lists and regular text (robust detection)
|
||||
pdf.set_fill_color(255, 255, 255)
|
||||
pdf.set_font('Helvetica', '', 11)
|
||||
pdf.set_text_color(*COLOR_TEXT_MAIN)
|
||||
|
||||
list_item = parse_list_item(line)
|
||||
line_processed = make_links_clickable(line)
|
||||
|
||||
if list_item:
|
||||
item_type, content, extra = list_item
|
||||
pdf.set_x(pdf.l_margin + 6)
|
||||
if item_type == 'cb':
|
||||
# Checkbox
|
||||
checkbox = '[x]' if extra else '[ ]'
|
||||
pdf.multi_cell(0, 7, safe_text(f"{checkbox} {content}"), markdown=True, fill=False)
|
||||
else:
|
||||
pdf.multi_cell(0, 7, safe_text(line_processed), markdown=True, fill=False)
|
||||
else:
|
||||
pdf.set_x(pdf.l_margin)
|
||||
pdf.multi_cell(0, 7, safe_text(line_processed), markdown=True, fill=False)
|
||||
|
||||
pdf.output(pdf_file)
|
||||
print(f"PDF Generated: {pdf_file}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python convert_to_pdf.py <input.md> [output.pdf]")
|
||||
sys.exit(1)
|
||||
|
||||
md_in = sys.argv[1]
|
||||
if len(sys.argv) >= 3:
|
||||
pdf_out = sys.argv[2]
|
||||
else:
|
||||
pdf_out = os.path.splitext(md_in)[0] + ".pdf"
|
||||
|
||||
convert(md_in, pdf_out)
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Windows
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
Desktop.ini
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Mac
|
||||
.DS_Store
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
|
||||
# Scripts
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
|
||||
# Temp
|
||||
*.tmp
|
||||
*.bak
|
||||
*.swp
|
||||
|
||||
# Editor
|
||||
.vscode/
|
||||
.idea/
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Manuais Zammad - Repositório de Documentação
|
||||
|
||||
Este repositório contém a documentação técnica da iT Guys, organizada por sistemas e níveis de acesso.
|
||||
|
||||
## Estrutura de Pastas
|
||||
|
||||
* **documentacao exchange/**: Manuais relacionados ao Microsoft Exchange.
|
||||
* **documentacao vmware/**: Manuais relacionados ao ambiente VMWare.
|
||||
* **.gemini/**: Scripts e assets utilitários para padronização e geração de PDFs.
|
||||
|
||||
## Como Gerar PDFs
|
||||
|
||||
Utilize o script localizado em `.gemini/convert_to_pdf.py` para converter os arquivos Markdown em PDF seguindo o padrão visual da iT Guys.
|
||||
|
||||
**Comando:**
|
||||
```powershell
|
||||
python .gemini/convert_to_pdf.py "Caminho/Para/Arquivo.md"
|
||||
```
|
||||
|
||||
## Padrões
|
||||
|
||||
Toda a documentação deve seguir o padrão definido no **MTITG 002-23**.
|
||||
Consulte os templates existentes e as regras de formatação antes de criar novos documentos.
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
# MANUAL TÉCNICO - ACESSO E CONFIGURAÇÃO DE WEBMAIL E CELULAR (EXCHANGE)
|
||||
|
||||
**Código:** ITITG 001/26 | **Classificação:** PÚBLICO
|
||||
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
|
||||
|
||||
## 1. HISTÓRICO DE REVISÃO
|
||||
|
||||
| Data | Versão | Descrição | Autor |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| {{DATA_ATUAL}} | 1.0 | Revisão e Padronização | João Pedro Toledo Gonçalves |
|
||||
|
||||
## 2. OBJETIVO
|
||||
Orientar o usuário final sobre como acessar seu e-mail corporativo via navegador (Webmail) e configurá-lo em dispositivos móveis (Android/iOS).
|
||||
|
||||
## 3. PRÉ-REQUISITOS
|
||||
Antes de iniciar, garanta que:
|
||||
* [ ] O dispositivo (computador ou celular) tem acesso à internet.
|
||||
* [ ] O usuário sabe seu **E-mail Completo** e **Senha de Rede**.
|
||||
* [ ] (Para Celular) O app Microsoft Outlook ou similar está instalado.
|
||||
|
||||
## 4. PASSO A PASSO (EXECUÇÃO)
|
||||
|
||||
**Etapa 1: Acesso via Webmail (Computador)**
|
||||
|
||||
1. Abra seu navegador (Chrome, Edge, Firefox).
|
||||
2. Acesse o endereço: [https://webmail.itguys.com.br/owa](https://webmail.itguys.com.br/owa)
|
||||
3. Na tela de login, preencha:
|
||||
* **Domínio\nome de usuário:** Digite seu e-mail completo (ex: `{{SEU_NOME}}@exemplo.com.br`).
|
||||
* **Senha:** Sua senha de rede.
|
||||
4. Clique em **Entrar** (Sign in).
|
||||
|
||||

|
||||
|
||||
> ℹ️ **NOTA:** Se for seu primeiro acesso, configure o fuso horário para *(UTC-03:00) Brasília*.
|
||||
|
||||
---
|
||||
|
||||
**Etapa 2: Configuração no App Microsoft Outlook (Recomendado)**
|
||||
|
||||
1. Abra o aplicativo **Microsoft Outlook**.
|
||||
2. Toque em **Adicionar Conta**.
|
||||
3. Digite seu e-mail corporativo completo e toque em **Adicionar Conta**.
|
||||
4. Se o app perguntar o tipo de conta, escolha **Exchange**.
|
||||
|
||||

|
||||
|
||||
5. Insira sua **Senha** e toque em **Entrar**.
|
||||
6. Aguarde a validação e pule a opção de adicionar outra conta ("Talvez mais tarde").
|
||||
|
||||
---
|
||||
|
||||
**Etapa 3: Configuração em Outros Apps (Nativo/Gmail)**
|
||||
|
||||
1. Abra as **Configurações** do celular ou o app de E-mail.
|
||||
2. Vá em **Contas** > **Adicionar Conta**.
|
||||
3. Escolha a opção **Exchange** ou **Corporativo** (Corporate).
|
||||
4. Preencha seu **E-mail** e **Senha**.
|
||||
|
||||

|
||||
|
||||
5. Se solicitar configurações manuais, use:
|
||||
* **Servidor:** `webmail.itguys.com.br`
|
||||
* **Domínio:** `{{SEU_DOMINIO}}` (ou deixe em branco se opcional)
|
||||
* **Nome de Usuário:** Seu e-mail completo.
|
||||
6. Toque em **Seguinte** (Next) e aceite os certificados se solicitado.
|
||||
|
||||
## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
|
||||
|
||||
**Erro: "Não foi possível conectar ao servidor"**
|
||||
* **Causa:** Falha na internet ou endereço digitado incorretamente.
|
||||
* **Solução:**
|
||||
1. Verifique se o site `https://webmail.itguys.com.br/owa` abre no navegador do celular.
|
||||
2. Confirme se digitou a senha correta (tente logar no Webmail para testar).
|
||||
|
||||
**Erro: "Certificado Inválido"**
|
||||
* **Solução:** Aceite/Confie no certificado se o sistema perguntar. Isso é comum em alguns Androids antigos.
|
||||
|
||||
## 6. DADOS TÉCNICOS
|
||||
| Campo | Valor Padrão |
|
||||
| :--- | :--- |
|
||||
| **Servidor Exchange** | `webmail.itguys.com.br` |
|
||||
| **Porta (HTTPS)** | 443 |
|
||||
| **Segurança** | SSL/TLS |
|
||||
| **Autenticação** | Senha Normal (Basic Auth) |
|
||||
|
||||
## 7. VALIDAÇÃO FINAL
|
||||
- [ ] Conseguiu enviar e receber um e-mail de teste?
|
||||
- [ ] A sincronização de calendário e contatos ocorreu?
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
# MANUAL TÉCNICO - CONFIGURAÇÃO DE RESPOSTA AUTOMÁTICA DE FÉRIAS (WEBMAIL)
|
||||
|
||||
**Código:** ITITG EXCH-002/26 | **Classificação:** PÚBLICO
|
||||
**Responsável:** João Pedro Toledo Gonçalves | **Data:** 22/01/2026
|
||||
|
||||
## 1. HISTÓRICO DE REVISÃO
|
||||
|
||||
| Data | Versão | Descrição | Autor |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 22/01/2026 | 1.0 | Criação Inicial e Adequação ao Padrão | João Pedro Toledo Gonçalves |
|
||||
|
||||
## 2. OBJETIVO
|
||||
Orientar o usuário a configurar avisos automáticos de "Fora do Escritório" (Férias/Ausência) através do Webmail, garantindo que remetentes internos e externos sejam notificados corretamente.
|
||||
|
||||
## 3. PRÉ-REQUISITOS
|
||||
Antes de iniciar, garanta que:
|
||||
* [ ] Você possui acesso à internet.
|
||||
* [ ] Sabe seu e-mail e senha corporativos.
|
||||
* [ ] Tem as datas exatas do seu período de ausência.
|
||||
|
||||
## 4. PASSO A PASSO (EXECUÇÃO)
|
||||
|
||||
**Etapa 1: Acessar as Configurações**
|
||||
1. Acesse o Webmail em: [https://webmail.itguys.com.br](https://webmail.itguys.com.br) e faça login.
|
||||
2. No canto superior direito, clique no ícone de **Engrenagem (Configurações)**.
|
||||
3. No menu que abrir, clique em **Respostas automáticas**.
|
||||
|
||||

|
||||
|
||||
**Etapa 2: Configurar a Mensagem**
|
||||
1. Selecione a opção **Enviar respostas automáticas**.
|
||||
2. Marque a caixa **Enviar respostas apenas durante este período**.
|
||||
3. Defina a **Data de início** e **Data de término** das suas férias.
|
||||
4. Na caixa de texto principal, escreva a mensagem para seus colegas de trabalho (**Remetentes Internos**).
|
||||
|
||||
> 💡 **DICA:** Uma boa mensagem contém: data de retorno e contato de emergência (se houver).
|
||||
|
||||
5. (Opcional) Para avisar clientes e fornecedores, marque "Enviar mensagens de resposta automática para remetentes fora a organização" e preencha a mensagem abaixo.
|
||||
6. Clique em **OK** no topo da janela para salvar.
|
||||
|
||||

|
||||
|
||||
## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
|
||||
|
||||
**Problema 1: "Não consigo salvar as alterações"**
|
||||
* **Causa:** Conexão instável ou sessão expirada.
|
||||
* **Solução:**
|
||||
1. Atualize a página (F5) e faça login novamente.
|
||||
2. Tente configurar usando outro navegador (Chrome, Edge).
|
||||
|
||||
**Problema 2: "As pessoas não estão recebendo a resposta"**
|
||||
* **Causa:** Data configurada incorretamente ou recurso desativado.
|
||||
* **Solução:** Verifique se a data de "Início" não está no futuro e se a opção "Enviar respostas automáticas" está marcada.
|
||||
|
||||
## 6. VALIDAÇÃO FINAL
|
||||
- [ ] O ícone de "Configurações" mostra que as respostas automáticas estão ativas?
|
||||
- [ ] Envie um e-mail de teste de uma conta pessoal (Gmail/Hotmail) para ver se recebe a resposta.
|
||||
|
After Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 298 KiB |
|
After Width: | Height: | Size: 277 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
|
@ -0,0 +1,76 @@
|
|||
# MANUAL TÉCNICO - DIAGNÓSTICO DE RECEBIMENTO - EXCHANGE LOCAL
|
||||
|
||||
**Código:** ITITG 042/26 | **Classificação:** INTERNO
|
||||
**Responsável:** Service Desk | **Data:** 22/01/2026
|
||||
|
||||
## 1. HISTÓRICO DE REVISÃO
|
||||
|
||||
| Data | Versão | Descrição | Autor |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 22/01/2026 | 2.0 | Revisão para Padrão iT Guys e Atualização de Telas | João Pedro Toledo Gonçalves |
|
||||
| 23/01/2026 | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
|
||||
|
||||
## 2. OBJETIVO
|
||||
Padronizar o atendimento para chamados onde o usuário relata **NÃO RECEBIMENTO** de e-mails, utilizando ferramentas de diagnóstico do Exchange Local.
|
||||
|
||||
## 3. PRÉ-REQUISITOS
|
||||
Antes de iniciar, garanta que:
|
||||
* [ ] Você possui acesso ao ECP (`https://webmail.itguys.com.br/ecp`).
|
||||
* [ ] O usuário forneceu o **remetente** e a **data aproximada** do e-mail não recebido.
|
||||
* [ ] Você verificou se o serviço de transporte do Exchange está rodando (via Monitoramento).
|
||||
|
||||
## 4. PASSO A PASSO (EXECUÇÃO)
|
||||
|
||||
**Etapa 1: Verificação Rápida (Estação do Usuário)**
|
||||
Muitas vezes o e-mail chegou, mas o usuário não viu.
|
||||
1. Peça ao usuário para verificar a pasta **Lixo Eletrônico** (Junk Email).
|
||||
2. Verifique se não há uma **Regra do Outlook** movendo e-mails automaticamente para subpastas.
|
||||
* *Dica:* Pesquise pelo assunto ou remetente na caixa inteira.
|
||||
|
||||
**Etapa 2: Rastreamento de Mensagem (ECP)**
|
||||
Se não estiver no Outlook, precisamos saber se chegou no servidor.
|
||||
|
||||
1. Acesse o **ECP** (Exchange Control Panel): [https://webmail.itguys.com.br/ecp](https://webmail.itguys.com.br/ecp)
|
||||
2. No menu lateral esquerdo, clique em **fluxo de emails**.
|
||||
3. No menu superior, clique na aba **notificações de entrega** (ou *Delivery Reports*).
|
||||
|
||||

|
||||
|
||||
4. Configure a busca na tela acima:
|
||||
* **Caixa de correio a ser pesquisadas:** Clique em **Procurar** e selecione o **USUÁRIO** que está reclamando (quem deveria receber).
|
||||
* **Procurar mensagens enviadas para:** (Opcional) Deixe em branco para ver tudo, ou selecione o remetente se souber quem enviou.
|
||||
5. Clique em **Pesquisar**.
|
||||
|
||||
**Etapa 3: Análise de Resultados**
|
||||
O sistema listará as mensagens. Clique duas vezes em uma mensagem para ver detalhes.
|
||||
|
||||
* **Estado: Entregue (Delivered):**
|
||||
* O Exchange entregou na caixa.
|
||||
* **Ação:** Problema é local (Outlook, Regra, Filtro de Exibição ou usuário deletou).
|
||||
* **Estado: Falha (Failed):**
|
||||
* O Exchange recusou a mensagem.
|
||||
* **Ação:** Verifique o erro detalhado. Pode ser anexo grande, SPAM, ou usuário bloqueado.
|
||||
* **Mensagem NÃO APARECE na Busca:**
|
||||
* O e-mail **NÃO CHEGOU** no seu servidor Exchange.
|
||||
* **Ação:** O problema é no Remetente ou num Anti-Spam de borda (antes do Exchange). Peça para o remetente verificar se recebeu mensagem de erro (bounce).
|
||||
|
||||
## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
|
||||
|
||||
**Cenário A: "Diz que foi entregue, mas não acho"**
|
||||
1. Use o **OWA** (Webmail) para conferir. Se estiver no OWA e não no Outlook, é problema de sincronização `.ost`.
|
||||
2. Desative o "Modo Cache" do Outlook temporariamente para testar.
|
||||
|
||||
**Cenário B: Status "Pendente"**
|
||||
1. O servidor está tentando entregar mas não consegue (fila presa ou DNS lento).
|
||||
2. Verifique as filas de transporte no servidor (necessário acesso Nível 2).
|
||||
|
||||
## 6. DADOS TÉCNICOS
|
||||
| Componente | Detalhe |
|
||||
| :--- | :--- |
|
||||
| URL ECP | `https://webmail.itguys.com.br/ecp` |
|
||||
| Porta | 443 (HTTPS) |
|
||||
| Log Retention | 30 Dias (Padrão) |
|
||||
|
||||
## 7. VALIDAÇÃO FINAL
|
||||
- [ ] O status da mensagem foi identificado?
|
||||
- [ ] O usuário foi orientado sobre onde está o e-mail ou quem deve contatar?
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
# MANUAL TÉCNICO - CRIAÇÃO E BLOQUEIO DE USUÁRIOS - EXCHANGE/AD
|
||||
|
||||
**Código:** ITITG 005/26 | **Classificação:** RESTRITO
|
||||
**Responsável:** Agente iT Guys | **Data:** 22/01/2026
|
||||
|
||||
## 1. HISTÓRICO DE REVISÃO
|
||||
|
||||
| Data | Versão | Descrição | Autor |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 22/01/2026 | 1.0 | Adequação ao padrão ITITG e detalhamento de processos | João Pedro Toledo Gonçalves |
|
||||
|
||||
## 2. OBJETIVO
|
||||
Padronizar o processo de criação de novos colaboradores e o bloqueio imediato de contas (desligamentos) garantindo a segurança e o acesso correto aos recursos de e-mail.
|
||||
|
||||
## 3. PRÉ-REQUISITOS
|
||||
Antes de iniciar, garanta que:
|
||||
* [ ] Você possui acesso administrativo ao Controlador de Domínio (AD).
|
||||
* [ ] Você possui acesso ao Exchange Control Panel (ECP).
|
||||
* [ ] As informações do usuário (Nome, Setor, E-mail desejado) foram aprovadas via ticket.
|
||||
|
||||
## 4. PASSO A PASSO (EXECUÇÃO)
|
||||
|
||||
### PARTE A: Bloqueio de Usuário (Desligamento)
|
||||
|
||||
> ⚠️ **IMPORTANTE:** O bloqueio deve ser feito **IMEDIATAMENTE** após a notificação do RH/Gestor. Não aguarde o fim do dia se a ordem for imediata.
|
||||
|
||||
**Etapa 1: Desabilitar no Active Directory**
|
||||
1. Acesse o servidor Controlador de Domínio.
|
||||
2. Pressione `Win + R`, digite `dsa.msc` e tecle Enter para abrir o **Active Directory Users and Computers**.
|
||||
3. Navegue até a **Organizational Unit (OU)** onde o usuário está localizado.
|
||||
4. Clique com o botão direito sobre o nome do usuário e selecione **Disable Account**.
|
||||
|
||||
> ℹ️ **NOTA:** Ao desabilitar a conta no AD, o Exchange bloqueará automaticamente o acesso ao e-mail e ActiveSync em até 15 minutos (tempo de replicação).
|
||||
|
||||

|
||||
|
||||
### PARTE B: Criação de Novo Usuário
|
||||
|
||||
**Etapa 1: Criar conta no AD**
|
||||
1. No `dsa.msc`, navegue até a OU correta (ex: `Empresa > Departamentos > Comercial`).
|
||||
2. Clique com o botão direito na área em branco > **New** > **User**.
|
||||
3. Preencha:
|
||||
* **First name:** Primeiro nome.
|
||||
* **User logon name:** O login padrão (ex: `nome.sobrenome`).
|
||||
4. Defina a senha padrão e marque **User must change password at next logon**.
|
||||
5. Conclua a criação.
|
||||
|
||||
**Etapa 2: Habilitar Caixa de Correio (Linkar ao Exchange)**
|
||||
1. Acesse o ECP pelo navegador: `https://webmail.itguys.com.br/ecp` (ou endereço interno).
|
||||
2. Faça login com credenciais administrativas.
|
||||
3. No menu lateral, clique em **Destinatários** e depois em **Caixas de Correio**.
|
||||
4. Clique no ícone **+ (Mais)** e selecione **Caixa de Correio do Usuário**.
|
||||
|
||||
|
||||
|
||||
5. Na nova janela:
|
||||
* **Alias:** Confirme se está igual ao login do AD.
|
||||
* **Usuário Existente:** Clique em **Procurar...**
|
||||
* Selecione o usuário criado na **Etapa 1** e clique em **OK**.
|
||||
6. Clique em **Salvar**.
|
||||
|
||||
## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
|
||||
|
||||
**Erro:** "Usuário não aparece na lista do Exchange para vincular."
|
||||
* **Causa:** A replicação entre os Controladores de Domínio pode não ter ocorrido ainda (se houver mais de um).
|
||||
* **Solução:**
|
||||
1. Aguarde 15 minutos.
|
||||
2. Ou force a replicação no AD Sites and Services.
|
||||
|
||||
**Erro:** "O endereço de e-mail ficou diferente do login."
|
||||
* **Solução:**
|
||||
1. No ECP, abra as propriedades do usuário.
|
||||
2. Vá em **Endereço de email**.
|
||||
3. Ajuste o SMTP principal (em negrito) para o correto.
|
||||
|
||||
## 6. DADOS TÉCNICOS
|
||||
| Parâmetro | Configuração Padrão |
|
||||
| :--- | :--- |
|
||||
| Padrão de Senha | Complexa (Maiúscula, minúscula, número, símbolo) |
|
||||
| Cota de E-mail | Padrão da Database (verificar plano do usuário) |
|
||||
| Protocolos | MAPI, OWA e ActiveSync habilitados por padrão |
|
||||
|
||||
## 7. VALIDAÇÃO FINAL
|
||||
- [ ] A conta está criada e o usuário consegue logar no computador?
|
||||
- [ ] O e-mail aparece na lista global de endereços (GAL)?
|
||||
- [ ] Enviou um e-mail de teste para o novo usuário e chegou?
|
||||
|
After Width: | Height: | Size: 534 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
|
@ -0,0 +1,95 @@
|
|||
# MANUAL TÉCNICO - GERENCIAMENTO DE COTAS E ARQUIVAMENTO (EXCHANGE)
|
||||
|
||||
**Código:** ITITG 005/26 | **Classificação:** RESTRITO
|
||||
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
|
||||
|
||||
## 1. HISTÓRICO DE REVISÃO
|
||||
|
||||
| Data | Versão | Descrição | Autor |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| {{DATA_ATUAL}} | 1.0 | Adequação ao padrão | João Pedro Toledo Gonçalves |
|
||||
|
||||
## 2. OBJETIVO
|
||||
Orientar o suporte Nível 2 na verificação de consumo de caixas postais, ajuste de cotas de armazenamento e habilitação de arquivo morto (In-Place Archive) no Exchange Server 2019.
|
||||
|
||||
## 3. PRÉ-REQUISITOS
|
||||
Antes de iniciar, garanta que:
|
||||
* [ ] Você possui acesso ao **Exchange Admin Center (ECP)** (https://webmail.itguys.com.br/ecp).
|
||||
* [ ] Sua conta tem permissões administrativas de "Recipient Management" ou superior.
|
||||
* [ ] O usuário afetado foi identificado corretamente.
|
||||
|
||||
## 4. PASSO A PASSO (EXECUÇÃO)
|
||||
|
||||
**Etapa 1: Verificar Uso da Caixa Postal**
|
||||
|
||||
1. Acesse o ECP e faça login com suas credenciais administrativas.
|
||||
2. No menu lateral esquerdo, vá em **destinatários** (recipients) > **caixas de correio** (mailboxes).
|
||||
3. Selecione o usuário que deseja verificar na lista.
|
||||
|
||||

|
||||
|
||||
4. No painel de detalhes à direita (ou clicando no ícone de lápis para editar), localize a seção **uso da caixa de correio** (mailbox usage).
|
||||
5. Observe a barra de progresso e o valor numérico (ex: "X GB de Y GB usados").
|
||||
|
||||

|
||||
|
||||
> ℹ️ **NOTA:** Se a barra estiver vermelha, o usuário atingiu ou ultrapassou o limite.
|
||||
|
||||
---
|
||||
|
||||
**Etapa 2: Aumentar a Cota de Armazenamento (Exceção)**
|
||||
|
||||
> ⚠️ **IMPORTANTE:** O aumento de cota deve ser tratado como exceção. Sempre priorize a limpeza (PST) ou Arquivamento.
|
||||
|
||||
1. Dentro da janela de propriedades do usuário, na aba **uso da caixa de correio**.
|
||||
2. Clique em **Mais opções...** (More options).
|
||||
3. Selecione a opção **Personalizar as configurações de cota para esta caixa de correio**.
|
||||
4. Defina os novos valores (em GB):
|
||||
* **Emitir um aviso em (GB):** Valor para o usuário receber alerta.
|
||||
* **Proibir envio em (GB):** O usuário para de enviar e-mails.
|
||||
* **Proibir envio e recebimento em (GB):** A caixa para de receber (crítico).
|
||||
5. Clique em **Salvar**.
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
**Etapa 3: Habilitar Arquivo Morto (In-Place Archive)**
|
||||
|
||||
Se o usuário tiver licença Enterprise (CAL) e precisar de mais espaço sem aumentar a cota principal:
|
||||
|
||||
1. Nas propriedades do usuário, vá até a aba **recursos da caixa de correio** (mailbox features).
|
||||
2. Localize a seção **Arquivamento** (Archiving).
|
||||
3. Se estiver "Desabilitado", clique em **Habilitar**.
|
||||
4. Selecione o banco de dados onde o arquivo será criado (geralmente o mesmo da caixa principal ou um DB específico de Archive).
|
||||
5. Clique em **Salvar**.
|
||||
|
||||

|
||||
|
||||
> 🚀 **DICA:** O novo "Arquivo Morto" aparecerá automaticamente no Outlook do usuário, logo abaixo da caixa principal, geralmente após 15 a 60 minutos.
|
||||
|
||||
## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
|
||||
|
||||
**Problema: "Alterei a cota mas o usuário ainda está bloqueado."**
|
||||
* **Causa:** Delay na replicação do Active Directory ou cache do Information Store.
|
||||
* **Solução:**
|
||||
1. Aguarde até 2 horas.
|
||||
2. Force a atualização do serviço "Microsoft Exchange Information Store" (Somente com aprovação N3).
|
||||
|
||||
**Problema: "Arquivo Morto não aparece no Outlook."**
|
||||
* **Causa:** Versão do Office incompatível (Standard) ou falta de licença.
|
||||
* **Solução:** Verifique se o Office instalado é a versão Professional Plus ou Enterprise. O Outlook Home & Business (algumas versões) não visualiza o Arquivo Online.
|
||||
|
||||
## 6. DADOS TÉCNICOS - POLÍTICA PADRÃO (DEFAULT)
|
||||
|
||||
| Limite | Valor Padrão (Sugestão) |
|
||||
| :--- | :--- |
|
||||
| **Aviso** | 1.9 GB |
|
||||
| **Proibir Envio** | 2.0 GB |
|
||||
| **Proibir Envio/Recebimento** | 2.3 GB |
|
||||
| **Tamanho Máx. Anexo** | 35 MB |
|
||||
|
||||
## 7. VALIDAÇÃO FINAL
|
||||
- [ ] O limite da caixa foi alterado conforme solicitado?
|
||||
- [ ] O usuário confirmou que voltou a enviar/receber e-mails?
|
||||
- [ ] (Se aplicável) O Arquivo Morto apareceu no Outlook do usuário?
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
# MANUAL TÉCNICO - GERENCIAMENTO DE QUARENTENA MÓVEL (ACTIVESYNC) - EXCHANGE
|
||||
|
||||
**Código:** ITITG 035/26 | **Classificação:** RESTRITO
|
||||
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
|
||||
|
||||
## 1. HISTÓRICO DE REVISÃO
|
||||
|
||||
| Data | Versão | Descrição | Autor |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| {{DATA_ATUAL}} | 1.0 | Revisão e Padronização (MTITG 002-23) | Agente iT Guys |
|
||||
|
||||
## 2. OBJETIVO
|
||||
Este procedimento orienta o analista de Service Desk a gerenciar dispositivos móveis que foram colocados em quarentena pelo Exchange (ActiveSync), explicando como aprovar, bloquear ou realizar o wipe remoto de dispositivos.
|
||||
|
||||
## 3. PRÉ-REQUISITOS
|
||||
Antes de iniciar, garanta que:
|
||||
* [ ] O Analista possui acesso ao **ECP (Exchange Admin Center)** ou **PowerShell** administrativo.
|
||||
* [ ] O usuário afetado confirmou o modelo do dispositivo que está tentando conectar.
|
||||
* [ ] Em caso de roubo/perda, a solicitação de Wipe foi formalizada pelo gestor ou pelo usuário.
|
||||
|
||||
## 4. PASSO A PASSO (EXECUÇÃO)
|
||||
|
||||
### Etapa 1: Aprovar Dispositivo via ECP (Web)
|
||||
|
||||
1. Acesse o **ECP** através do navegador:
|
||||
* URL: `https://webmail.itguys.com.br/ecp`
|
||||
2. Faça login com suas credenciais administrativas.
|
||||
3. No menu esquerdo, clique em **Móvel** (Mobile).
|
||||
4. No menu superior, clique em **Acesso a Dispositivos Móveis**.
|
||||
5. Você verá uma lista de dispositivos com o status **Em Quarentena**.
|
||||
6. Selecione o dispositivo do usuário (confira o campo "Usuário" e "Modelo do Dispositivo").
|
||||
7. Clique no botão **Permitir** (Geralmente um ícone verde "Permitir" ou "Allow").
|
||||
|
||||
> ℹ️ **NOTA:** A replicação da permissão pode levar alguns minutos para o celular do usuário começar a baixar os e-mails.
|
||||
|
||||

|
||||
|
||||
### Etapa 2: Aprovar Dispositivo via PowerShell (Alternativa Rápida)
|
||||
|
||||
Se você já souber o nome da caixa de correio do usuário, este método é mais ágil.
|
||||
|
||||
1. Abra o **Exchange Management Shell** (PowerShell).
|
||||
2. Verifique o ID do dispositivo em quarentena:
|
||||
```powershell
|
||||
Get-MobileDevice -Mailbox "{{USUARIO}}" | Select DeviceModel, DeviceAccessState, DeviceId
|
||||
```
|
||||
3. Identifique o `DeviceId` que está com `DeviceAccessState` como `Quarantined`.
|
||||
4. Autorize o dispositivo usando o ID coletado:
|
||||
```powershell
|
||||
Set-CasMailbox -Identity "{{USUARIO}}" -ActiveSyncAllowedDeviceIDs @{Add="{{DEVICE_ID}}"}
|
||||
```
|
||||
|
||||
### Etapa 3: Bloquear ou Limpar Dispositivo (Roubo/Perda)
|
||||
|
||||
> ⚠️ **IMPORTANTE:** O comando de **Limpar Dados (Wipe)** apagará todos os dados corporativos do dispositivo. Em alguns casos (dependendo da política), pode resetar o aparelho para o padrão de fábrica. Use com cautela.
|
||||
|
||||
1. No **ECP**, vá em **Destinatários** > **Caixas de Correio**.
|
||||
2. Selecione o usuário na lista.
|
||||
3. No painel direito, role até **Recursos de Telefone e Voz** e clique em **Exibir detalhes**.
|
||||
4. Na nova janela, selecione o dispositivo móvel alvo.
|
||||
5. Escolha uma das ações:
|
||||
* **Bloquear:** Impede nova sincronização.
|
||||
* **Limpar Dados (Wipe):** Envia comando para apagar dados na próxima conexão.
|
||||
|
||||
## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
|
||||
|
||||
**Erro:** "O dispositivo continua em quarentena mesmo após aprovar"
|
||||
* **Causa:** Delay de replicação do Active Directory ou cache do dispositivo.
|
||||
* **Solução:**
|
||||
1. Aguarde 15 minutos.
|
||||
2. Peça para o usuário reiniciar o celular.
|
||||
3. Verifique se o dispositivo não excedeu o limite máximo de parcerias (padrão é 10 dispositivos por usuário).
|
||||
|
||||
**Erro:** "Comando Wipe não funcionou"
|
||||
* **Causa:** O dispositivo não conectou à internet ou ao Exchange após o comando.
|
||||
* **Solução:** O Wipe só ocorre quando o dispositivo tenta sincronizar novamente. Se ele estiver offline ou sem bateria, o comando ficará pendente.
|
||||
|
||||
## 6. DADOS TÉCNICOS
|
||||
|
||||
| Parâmetro | Detalhe |
|
||||
| :--- | :--- |
|
||||
| Limite Padrão | 10 dispositivos por usuário |
|
||||
| Porta ActiveSync | 443 (HTTPS) |
|
||||
| Protocolo | Exchange ActiveSync (EAS) |
|
||||
|
||||
## 7. VALIDAÇÃO FINAL
|
||||
- [ ] O status do dispositivo mudou para "Allowed" (Permitido)?
|
||||
- [ ] O usuário confirmou que os e-mails começaram a baixar?
|
||||
- [ ] Caso seja um bloqueio, o acesso foi interrompido?
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
# MANUAL TÉCNICO - GESTÃO DE PERMISSÕES (FULL ACCESS E SEND AS) - EXCHANGE
|
||||
|
||||
**Código:** ITITG 037/26 | **Classificação:** RESTRITO
|
||||
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
|
||||
|
||||
## 1. HISTÓRICO DE REVISÃO
|
||||
|
||||
| Data | Versão | Descrição | Autor |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| {{DATA_ATUAL}} | 1.0 | Revisão e Padronização (MTITG 002-23) | Agente iT Guys |
|
||||
|
||||
## 2. OBJETIVO
|
||||
Orientar a concessão de permissões de acesso e envio em caixas de correio do Exchange, diferenciando os tipos de acesso e explicando os processos de configuração via ECP.
|
||||
|
||||
## 3. PRÉ-REQUISITOS
|
||||
Antes de iniciar, garanta que:
|
||||
* [ ] **Aprovação Gerencial:** A solicitação foi aprovada formalmente pelo gestor da caixa alvo (Risco de Privacidade).
|
||||
* [ ] O Analista possui acesso administrativo ao **ECP**.
|
||||
* [ ] O usuário que receberá o acesso já existe no AD.
|
||||
|
||||
## 4. CONCEITOS TÉCNICOS
|
||||
|
||||
* **Acesso Total (Full Access):**
|
||||
* O que faz: Permite ler, mover, apagar e criar pastas na caixa alvo.
|
||||
* Comportamento: A caixa aparece automaticamente no Outlook do delegado (AutoMapping).
|
||||
* **Limitação:** NÃO permite enviar e-mails.
|
||||
|
||||
* **Enviar Como (Send As):**
|
||||
* O que faz: Permite enviar e-mails "como se fosse" a caixa alvo (o remetente sai como `caixa@dominio.com`).
|
||||
* Comportamento: Oculta o endereço real do remetente.
|
||||
|
||||
* **Enviar em Nome de (Send on Behalf):**
|
||||
* O que faz: O destinatário recebe o e-mail como "Fulano em nome de Caixa".
|
||||
* *Configuração diferente (geralmente não usada para contas de serviço).*
|
||||
|
||||
## 5. PASSO A PASSO (EXECUÇÃO)
|
||||
|
||||
### Etapa 1: Localizar a Caixa no ECP
|
||||
|
||||
1. Acesse o **ECP**: `https://webmail.itguys.com.br/ecp`
|
||||
2. Vá em **Destinatários** > **Caixas de Correio**.
|
||||
3. Selecione a caixa **ALVO** (a caixa que será acessada/compartilhada).
|
||||
4. Clique no ícone de Lápis (**Editar**).
|
||||
|
||||
### Etapa 2: Configurar Delegação
|
||||
|
||||
1. Na janela de propriedades, clique em **Delegação de caixa de correio** no menu esquerdo.
|
||||
2. Identifique a seção desejada:
|
||||
* **Acesso Total:** Para ler e-mails.
|
||||
* **Enviar Como:** Para enviar e-mails.
|
||||
3. Clique no ícone **+ (Mais)** na seção correspondente.
|
||||
4. Selecione o usuário ou grupo que **receberá** o acesso e clique em **Adicionar** > **OK**.
|
||||
5. Clique em **Salvar**.
|
||||
|
||||
> ⚠️ **IMPORTANTE:** Se o usuário precisar ler E enviar, você deve adicionar o nome dele nas DUAS listas (Acesso Total e Enviar Como).
|
||||
|
||||

|
||||
|
||||
## 6. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
|
||||
|
||||
**Problema:** "A caixa não apareceu no Outlook do usuário."
|
||||
* **Causa:** Delay de replicação do AD ou Cache do Outlook.
|
||||
* **Solução:**
|
||||
1. Aguarde até 60 minutos.
|
||||
2. Reinicie o Outlook do usuário.
|
||||
3. Se urgente, configure a caixa manualmente via IMAP ou adicione como "Conta Adicional" (não recomendado).
|
||||
|
||||
**Problema:** "Erro ao enviar e-mail: Você não tem permissão para enviar..."
|
||||
* **Causa:** A permissão "Send As" demora mais para replicar (cache do OAB).
|
||||
* **Solução:** Baixe o OAB manualmente no Outlook (ver manual ITITG 036/26) ou aguarde 2 horas.
|
||||
|
||||
## 7. VALIDAÇÃO FINAL
|
||||
- [ ] O usuário consegue expandir as pastas da caixa compartilhada?
|
||||
- [ ] O usuário consegue enviar um e-mail de teste selecionando o remetente da caixa?
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
# MANUAL TÉCNICO - SOLUÇÃO DE PROBLEMAS DE LISTA DE ENDEREÇOS (OAB) - EXCHANGE
|
||||
|
||||
**Código:** ITITG 036/26 | **Classificação:** RESTRITO
|
||||
**Responsável:** Agente iT Guys | **Data:** {{DATA_ATUAL}}
|
||||
|
||||
## 1. HISTÓRICO DE REVISÃO
|
||||
|
||||
| Data | Versão | Descrição | Autor |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| {{DATA_ATUAL}} | 1.0 | Revisão e Padronização (MTITG 002-23) | Agente iT Guys |
|
||||
|
||||
## 2. OBJETIVO
|
||||
Este procedimento visa resolver o incidente onde novos usuários criados no Exchange/AD não aparecem no catálogo de endereços do Outlook Desktop dos colaboradores ("Offline Address Book" desatualizado).
|
||||
|
||||
## 3. PRÉ-REQUISITOS
|
||||
Antes de iniciar, garanta que:
|
||||
* [ ] O usuário foi criado há mais de 1 hora.
|
||||
* [ ] Você tem acesso ao **Exchange Management Shell** (PowerShell) no servidor.
|
||||
* [ ] O Outlook do usuário está configurado em "Modo Cache" (padrão).
|
||||
|
||||
## 4. PASSO A PASSO (EXECUÇÃO)
|
||||
|
||||
### Etapa 1: Validação via Webmail (OWA)
|
||||
Antes de culpar o OAB, precisamos garantir que o usuário **realmente existe** na lista global do servidor. O Webmail acessa o banco de dados em tempo real.
|
||||
|
||||
1. Acesse `https://webmail.itguys.com.br/owa`.
|
||||
2. Clique no ícone de **Pessoas** (Canto inferior esquerdo ou no menu de Apps).
|
||||
3. Pesquise pelo nome do novo usuário em "Diretório" > "All Users".
|
||||
|
||||
> ℹ️ **NOTA:** Se o usuário **NÃO** aparecer aqui, o problema é na criação da conta (AD Connector ou replicação), não no OAB. Se aparecer aqui e não no Outlook Desktop, siga para a Etapa 2.
|
||||
|
||||

|
||||
|
||||
### Etapa 2: Forçar Atualização no Servidor (PowerShell)
|
||||
O Exchange gera o OAB automaticamente apenas uma vez por dia (05:00 AM). Vamos forçar a geração agora.
|
||||
|
||||
1. Acesse o servidor Exchange.
|
||||
2. Abra o **Exchange Management Shell**.
|
||||
3. Execute o comando:
|
||||
```powershell
|
||||
Get-OfflineAddressBook | Update-OfflineAddressBook
|
||||
```
|
||||
4. Aguarde cerca de **10 minutos** para que os novos arquivos sejam distribuídos para o diretório virtual do IIS.
|
||||
|
||||
### Etapa 3: Forçar Download no Cliente (Outlook Desktop)
|
||||
Agora que o servidor tem a lista nova, o Outlook do usuário precisa baixá-la.
|
||||
|
||||
1. No computador do usuário, abra o **Outlook**.
|
||||
2. Vá na aba **Enviar/Receber**.
|
||||
3. Clique em **Grupos de Envio/Recebimento** > **Baixar Catálogo de Endereços**.
|
||||
4. **IMPORTANTE:** Desmarque a opção "Baixar alterações desde o último envio/recebimento". Queremos o catálogo COMPLETO.
|
||||
5. Clique em **OK**.
|
||||
|
||||
### Etapa 4: Caso Extremo (Limpar Cache Local)
|
||||
Se o download falhar ou o arquivo local estiver corrompido:
|
||||
|
||||
1. Feche o Outlook completamente.
|
||||
2. Abra o Windows Explorer e cole o caminho: `%localappdata%\Microsoft\Outlook\Offline Address Books`
|
||||
3. Você verá subpastas com nomes de GUID (ex: `1a2b3c...`). **Apague** essas pastas.
|
||||
4. Abra o Outlook novamente. Ele forçará o download do zero.
|
||||
|
||||
## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
|
||||
|
||||
**Erro:** "0x8004010F: A operação falhou. Um objeto não pôde ser encontrado."
|
||||
* **Causa:** O diretório virtual do OAB no IIS pode estar corrompido ou sem permissão.
|
||||
* **Solução:** Verifique os serviços do Exchange "System Attendant" e "File Distribution Service".
|
||||
|
||||
## 6. DADOS TÉCNICOS
|
||||
|
||||
| Parâmetro | Detalhe |
|
||||
| :--- | :--- |
|
||||
| Agendamento Padrão | 05:00 AM (Diário) |
|
||||
| Local do Arquivo (Server) | `%ExchangeInstallPath%\ClientAccess\OAB` |
|
||||
| Local do Arquivo (Client) | `%localappdata%\Microsoft\Outlook\Offline Address Books` |
|
||||
|
||||
## 7. VALIDAÇÃO FINAL
|
||||
- [ ] O usuário apareceu no Outlook após o download?
|
||||
- [ ] A sincronização ocorreu sem mensagens de erro na barra de status?
|
||||
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 100 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 104 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
|
@ -0,0 +1,76 @@
|
|||
# MANUAL TÉCNICO - ACESSO AO SERVIDOR WINDOWS CORE E POWERSHELL
|
||||
|
||||
**Código:** ITITG 038/26 | **Classificação:** RESTRITO
|
||||
**Responsável:** Engenharia de Sistemas | **Data:** {{DATA_ATUAL}}
|
||||
|
||||
## 1. HISTÓRICO DE REVISÃO
|
||||
|
||||
| Data | Versão | Descrição | Autor |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| {{DATA_ATUAL}} | 1.0 | Revisão e Padronização (MTITG 002-23) | Agente iT Guys |
|
||||
|
||||
## 2. OBJETIVO
|
||||
Orientar o acesso e a administração básica do servidor Exchange `SRVCGDVIEXCH001`, que opera em modo **Windows Server Core** (Sem Interface Gráfica), exigindo o uso de linha de comando para gerenciamento.
|
||||
|
||||
## 3. PRÉ-REQUISITOS
|
||||
Antes de iniciar, garanta que:
|
||||
* [ ] Você está conectado à VPN Corporativa.
|
||||
* [ ] O seu usuário possui permissão de **Domain Admin**.
|
||||
* [ ] O acesso RDP (Porta 3389) está liberado para o seu IP.
|
||||
|
||||
## 4. DADOS DO SERVIDOR
|
||||
| Parâmetro | Valor |
|
||||
| :--- | :--- |
|
||||
| **Hostname** | `SRVCGDVIEXCH001` |
|
||||
| **IP** | `172.16.150.150` |
|
||||
| **SO** | Windows Server Core (GUI-less) |
|
||||
|
||||
## 5. PASSO A PASSO (EXECUÇÃO)
|
||||
|
||||
### Etapa 1: Conexão Remota (RDP)
|
||||
|
||||
1. Abra a **Conexão de Área de Trabalho Remota** (`mstsc`).
|
||||
2. Conecte-se ao IP: `172.16.150.150`.
|
||||
3. Autentique-se com credenciais administrativas (`DOMINIO\SeuUsuario`).
|
||||
4. Ao logar, você verá apenas uma janela de **CMD**. **NÃO FECHE ESSA JANELA.**
|
||||
|
||||
### Etapa 2: Comandos Básicos do Sistema
|
||||
|
||||
Como não há Menu Iniciar, use os comandos abaixo:
|
||||
|
||||
* **`sconfig`**: Abre o menu de configuração (IP, Updates, Data/Hora).
|
||||
* **`taskmgr`**: Abre o Gerenciador de Tarefas (Gráfico).
|
||||
* **`logoff`**: Para sair da sessão corretamente.
|
||||
* **`shutdown /r /t 0`**: Reiniciar o servidor imediatamente.
|
||||
|
||||

|
||||
|
||||
### Etapa 3: Gerenciamento do Exchange (EMS)
|
||||
|
||||
Para administrar o Exchange, precisamos carregar os módulos (Snap-ins) no PowerShell.
|
||||
|
||||
1. No CMD padrão, digite `powershell` e tecle Enter.
|
||||
2. O prompt mudará para `PS C:\Users\...>`.
|
||||
3. Execute o comando para carregar o snap-in:
|
||||
```powershell
|
||||
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
|
||||
```
|
||||
4. Teste se o módulo carregou listando o servidor:
|
||||
```powershell
|
||||
Get-ExchangeServer
|
||||
```
|
||||
|
||||
## 6. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
|
||||
|
||||
**Situação:** "Fechei a janela do CMD sem querer e a tela ficou preta."
|
||||
* **Solução:**
|
||||
1. Pressione `Ctrl` + `Shift` + `Esc` para abrir o **Task Manager**.
|
||||
2. Clique em **Arquivo** > **Executar nova tarefa**.
|
||||
3. Digite `cmd` e dê OK.
|
||||
|
||||
**Situação:** "O comando do Exchange não é reconhecido."
|
||||
* **Solução:** Você esqueceu de rodar o comando `Add-PSSnapin` (Etapa 3.3). O PowerShell padrão do Windows não conhece comandos do Exchange.
|
||||
|
||||
## 7. VALIDAÇÃO FINAL
|
||||
- [ ] Conseguiu conectar via RDP?
|
||||
- [ ] O comando `Get-ExchangeServer` retornou o nome do servidor (`SRVCGDVIEXCH001`)?
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# [Nível 3] Arquitetura Técnica e Mapeamento
|
||||
|
||||
**Público Alvo:** Engenharia / SysAdmin
|
||||
**Confidencialidade:** Interna.
|
||||
|
||||
## 1. Identificação do Servidor
|
||||
|
||||
- **Hostname:** `SRVCGDVIEXCH001`
|
||||
- **FQDN Interno:** `srvcgdviexch001.exch.local`
|
||||
- **IP:** (Verificar no adaptador de rede)
|
||||
|
||||
## 2. Bases de Dados (Mailbox Databases)
|
||||
|
||||
| Nome | Status |
|
||||
| :---------------------------------------------- | :------ |
|
||||
| `ANATRAM`, `ENSEG - Local`, `ENSEG disco E` | Montado |
|
||||
| `Ferreira Real`, `Grupo PraLog` | Montado |
|
||||
| `IntegraMedBR`, `IronZoneBR disco G`, `iT Guys` | Montado |
|
||||
| `Mailbox Database 0...` (Default) | Montado |
|
||||
| `Oeste Pan`, `Trois Cents`, `Z Station` | Montado |
|
||||
|
||||
## 3. Certificados Digitais
|
||||
|
||||
- **Emissor:** Certify (Let's Encrypt / ACME).
|
||||
- **Subject:** `mail.itguys.com.br`
|
||||
- **Renovação:** Automática (verificar serviço do Certify no Windows).
|
||||
|
||||
## 4. Endereçamento Externo
|
||||
|
||||
- **OWA/ECP:** `https://webmail.itguys.com.br`
|
||||
- **Autodiscover:** `autodiscover.itguys.com.br` (e demais domínios via CNAME/SRV).
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
# [Nível 3] Auditoria Administrativa e Logs de Segurança
|
||||
|
||||
**Público Alvo:** Segurança / Auditoria
|
||||
**Objetivo:** Descobrir "Quem fez o que" no servidor.
|
||||
|
||||
## Introdução
|
||||
|
||||
O Exchange registra **cada comando PowerShell** executado, seja por um administrador via Shell ou via interface ECP (a interface web apenas roda comandos PowerShell por trás).
|
||||
|
||||
## Buscando Eventos (Search-AdminAuditLog)
|
||||
|
||||
### Exemplo 1: Quem mexeu na caixa do Diretor?
|
||||
|
||||
Procurar qualquer alteração feita na caixa "diretor@itguys.com.br" nos últimos 30 dias.
|
||||
|
||||
```powershell
|
||||
Search-AdminAuditLog -StartDate (Get-Date).AddDays(-30) -ObjectIds "diretor"
|
||||
```
|
||||
|
||||
### Exemplo 2: Quem deu permissão de "FullAccess"?
|
||||
|
||||
Procurar comandos específicos (`Add-MailboxPermission`).
|
||||
|
||||
```powershell
|
||||
Search-AdminAuditLog -Cmdlets Add-MailboxPermission -StartDate (Get-Date).AddDays(-7)
|
||||
```
|
||||
|
||||
### Exemplo 3: Quem apagou uma caixa?
|
||||
|
||||
Comandos de remoção (`Remove-Mailbox`).
|
||||
|
||||
```powershell
|
||||
Search-AdminAuditLog -Cmdlets Remove-Mailbox
|
||||
```
|
||||
|
||||
## Interpretando o Resultado
|
||||
|
||||
- **Caller:** O usuário (admin) que executou a ação.
|
||||
- **CmdletName:** O comando rodado.
|
||||
- **ObjectModified:** Qual objeto foi alterado.
|
||||
- **CmdletParameters:** Os parâmetros usados (ex: qual permissão foi dada).
|
||||
|
||||
## Dica de Exportação
|
||||
|
||||
Para ler melhor, exporte para HTML ou CSV.
|
||||
|
||||
```powershell
|
||||
Search-AdminAuditLog ... | New-AdminAuditLogSearch -Name "Auditoria_Diretor" -Emails "seu.email@itguys.com.br"
|
||||
```
|
||||
|
||||
_(Isso enviará um relatório XML por e-mail para você)._
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# [Nível 3] Checklist de Manutenção Diária e Semanal
|
||||
|
||||
**Público Alvo:** Operações (NOC) / SysAdmin
|
||||
|
||||
## Diárias (Daily Checks)
|
||||
|
||||
1. **Filas de E-mail (Queues)**
|
||||
- PowerShell: `Get-Queue`
|
||||
- _Esperado:_ `MessageCount` zerado ou baixo (<50). Se alto, investigar.
|
||||
2. **Serviços do Windows**
|
||||
- PowerShell: `Test-ServiceHealth` e `Get-Service *Exchange*`
|
||||
- _Esperado:_ Todos `Running`.
|
||||
3. **Cópia de Banco de Dados**
|
||||
- PowerShell: `Get-MailboxDatabaseCopyStatus`
|
||||
- _Esperado:_ `Healthy` ou `Mounted`.
|
||||
|
||||
## Mensais (Monthly Checks)
|
||||
|
||||
1. **Certificados SSL**
|
||||
- PowerShell: `Get-ExchangeCertificate | Select Subject, NotAfter`
|
||||
- _Ação:_ Garantir que a data de expiração esteja longe.
|
||||
2. **Espaço em Disco**
|
||||
- Verificar drives de LOGS. Se encherem, o banco desmonta.
|
||||
3. **Windows Update**
|
||||
- Aplicar patches de segurança do SO e Cumulative Updates (CUs) do Exchange.
|
||||
- _Atenção:_ Sempre rodar backup antes de update de CU.
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# [Nível 3] Disaster Recovery e Soft Restore
|
||||
|
||||
**Público Alvo:** Engenharia
|
||||
**Situação:** Perda de dados ou falha de servidor.
|
||||
|
||||
## 1. Recuperação de Item Único (Soft Delete)
|
||||
|
||||
Se um usuário apagou um e-mail e limpou a Lixeira, o Exchange retém o item por **14 dias** (padrão).
|
||||
|
||||
1. No Outlook do usuário (ou via Webmail).
|
||||
2. Clique com botão direito em **Itens Excluídos**.
|
||||
3. **Recuperar Itens Excluídos**.
|
||||
4. Selecione o e-mail e restaure.
|
||||
|
||||
## 2. Recuperação de Banco de Dados (Database Restore)
|
||||
|
||||
Se o arquivo `.edb` corromper.
|
||||
|
||||
1. **Dial Tone Recovery:**
|
||||
|
||||
- Criar um banco vazio para os usuários voltarem a trabalhar (enviar/receber novos).
|
||||
- Restaurar o backup antigo em paralelo.
|
||||
- Fazer o merge (RDB - Recovery Database).
|
||||
|
||||
2. **Ferramenta de Backup:**
|
||||
- Utilize a ferramenta corporativa (Veeam/Backup Exec) para restaurar o arquivo `.edb` e logs.
|
||||
- Use o `Eseutil /r` para "replay" dos logs se necessário.
|
||||
|
||||
## 3. Comandos Úteis de Emergência
|
||||
|
||||
- Verificar estado dos componentes: `Get-ServerComponentState -Identity SRVCGDVIEXCH001`
|
||||
- Colocar servidor em manutenção: `Set-ServerComponentState ... -State Inactive`
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# [Nível 3] Gestão de Conectores e Roteamento
|
||||
|
||||
**Público Alvo:** Engenharia / SysAdmin
|
||||
**Impacto:** Parada total de fluxo de e-mails.
|
||||
|
||||
## 1. Conectores de Envio (Send Connectors)
|
||||
|
||||
Como o e-mail sai da organização.
|
||||
|
||||
### `365` (Smart Host)
|
||||
|
||||
Este conector força o envio de certos domínios parceiros para serem entregues via Microsoft 365, garantindo entregabilidade ou criptografia.
|
||||
|
||||
- **Rota:** `itguys-com-br.mail.protection.outlook.com`
|
||||
- **Domínios Afetados:** `*.arteris.com.br`, `*.fraport-brasil.com`, `*.azulrio.com.br`, etc.
|
||||
- **Custo:** 1 (Prioritário).
|
||||
|
||||
### `MX` (Internet Geral)
|
||||
|
||||
Rota padrão para todo o resto do mundo.
|
||||
|
||||
- **Método:** DNS MX Records.
|
||||
- **Domínios:** `*` (Todos).
|
||||
- **Custo:** 2.
|
||||
|
||||
## 2. Conectores de Recebimento (Receive Connectors)
|
||||
|
||||
Quem pode conectar no servidor.
|
||||
|
||||
- **Client Frontend (587):** Outlook, Celulares.
|
||||
- **Default Frontend (25):** Entrada de e-mails da internet.
|
||||
- **Relays de Aplicação:**
|
||||
- `Conector ENSEG`: Permite IPs internos enviarem sem autenticação (Impressoras?).
|
||||
- `Conector ITGUYS`: Similar ao acima.
|
||||
- `NOC Op Manager`: Desabilitado.
|
||||
|
||||
**Segurança:** Antes de adicionar IPs nestes conectores, verifique se são estáticos e confiáveis.
|
||||
|
|
@ -0,0 +1,126 @@
|
|||
# [Nível 3] Referência de Operações via PowerShell
|
||||
|
||||
**Contexto:** Este guia foca na administração do Exchange **sem interface gráfica**, essencial para o ambiente Windows Server Core (`172.16.150.150`).
|
||||
**Pré-requisito:** Carregar o snap-in no CMD/PowerShell: `Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn`
|
||||
|
||||
---
|
||||
|
||||
## 1. Gestão de Destinatários
|
||||
|
||||
### Criar Nova Caixa de Correio (Usuário já existe no AD)
|
||||
|
||||
```powershell
|
||||
Enable-Mailbox -Identity "dominio\usuario" -Database "NOME_DO_BANCO"
|
||||
```
|
||||
|
||||
### Criar Usuário + Caixa (Tudo de uma vez)
|
||||
|
||||
```powershell
|
||||
New-Mailbox -UserPrincipalName "fulano@itguys.com.br" -Alias "fulano" -Name "Fulano da Silva" -OrganizationalUnit "ITGUYS/Users" -Database "iT Guys" -Password (ConvertTo-SecureString -String 'Senha123' -AsPlainText -Force)
|
||||
```
|
||||
|
||||
### Ajustar Cotas (Exceção)
|
||||
|
||||
```powershell
|
||||
Set-Mailbox -Identity "fulano" -IssueWarningQuota 4.5GB -ProhibitSendQuota 4.75GB -ProhibitSendReceiveQuota 5GB -UseDatabaseQuotaDefaults $false
|
||||
```
|
||||
|
||||
### Ver Tamanho da Caixa
|
||||
|
||||
```powershell
|
||||
Get-MailboxStatistics -Identity "fulano" | Select DisplayName, TotalItemSize, ItemCount
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Permissões e Delegação
|
||||
|
||||
### Dar Acesso Total (Full Access)
|
||||
|
||||
```powershell
|
||||
Add-MailboxPermission -Identity "CaixaAlvo" -User "UsuarioQueAcessa" -AccessRights FullAccess -InheritanceType All
|
||||
```
|
||||
|
||||
### Dar Permissão de Enviar Como (Send As)
|
||||
|
||||
_Nota: Este comando é de AD, não de Mailbox._
|
||||
|
||||
```powershell
|
||||
Add-ADPermission -Identity "CaixaAlvo" -User "UsuarioQueAcessa" -ExtendedRights "Send-As"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Rastreamento e Troubleshooting (Message Trace)
|
||||
|
||||
O `Get-MessageTrackingLog` é mais poderoso que a busca do ECP.
|
||||
|
||||
### Rastrear e-mail específico (Remetente -> Destinatário)
|
||||
|
||||
Visualizar status, data e EventID (Deliver, Fail, Defer).
|
||||
|
||||
```powershell
|
||||
Get-MessageTrackingLog -Start "12/20/2025 08:00" -Sender "remetente@externo.com" -Recipients "usuario@itguys.com.br" | Select Timestamp,EventId,Source,MessageSubject
|
||||
```
|
||||
|
||||
### Ver por que falhou (Detalhe do erro)
|
||||
|
||||
Se o EventID for `FAIL`, adicione `RecipientsStatus` e `RecipientStatus` para ver o erro.
|
||||
|
||||
```powershell
|
||||
... | Select Timestamp,EventId,Recipients,RecipientStatus
|
||||
```
|
||||
|
||||
### Ver e-mails enviados por um usuário hoje
|
||||
|
||||
```powershell
|
||||
Get-MessageTrackingLog -ResultSize Unlimited -Start (Get-Date).AddHours(-24) -Sender "usuario@itguys.com.br" -EventId SEND
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Diagnóstico de Filas e Fluxo
|
||||
|
||||
### Ver Filas de Envio (Queues)
|
||||
|
||||
Se `MessageCount` estiver alto, há congestionamento.
|
||||
|
||||
```powershell
|
||||
Get-Queue | Select Identity, DeliveryType, Status, MessageCount, LastError
|
||||
```
|
||||
|
||||
### Ver mensagens presas em uma fila específica
|
||||
|
||||
```powershell
|
||||
Get-Message -Queue "SRVCGDVIEXCH001\365" | Select Subject,FromAddress,Status
|
||||
```
|
||||
|
||||
### Forçar nova tentativa de envio (Retry)
|
||||
|
||||
```powershell
|
||||
Retry-Queue -Identity "SRVCGDVIEXCH001\365" -Resubmit $true
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Manutenção e Saúde do Servidor
|
||||
|
||||
### Checar status dos Bancos de Dados
|
||||
|
||||
Verifica se estão Montados e Saudáveis.
|
||||
|
||||
```powershell
|
||||
Get-MailboxDatabaseCopyStatus *
|
||||
```
|
||||
|
||||
### Checar Serviços do Exchange
|
||||
|
||||
```powershell
|
||||
Test-ServiceHealth
|
||||
```
|
||||
|
||||
### Espaço em Disco (Via WMI/CIM - já que não tem Explorer)
|
||||
|
||||
```powershell
|
||||
Get-CimInstance Win32_LogicalDisk | Select DeviceID, @{N='FreeGB';E={"{0:N2}" -f ($_.FreeSpace/1GB)}}, @{N='TotalGB';E={"{0:N2}" -f ($_.Size/1GB)}}
|
||||
```
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
# [Nível 3] Relatórios Avançados e Manutenção de Banco de Dados
|
||||
|
||||
**Público Alvo:** SysAdmin / Gestão
|
||||
**Ferramenta:** PowerShell (EMS)
|
||||
|
||||
---
|
||||
|
||||
## 1. Relatórios de Uso e População
|
||||
|
||||
### Contagem de Usuários por Banco de Dados (Cliente)
|
||||
|
||||
Como o ambiente é multi-tenant separado por Database, este comando mostra quantos usuários cada cliente tem.
|
||||
|
||||
```powershell
|
||||
Get-Mailbox -ResultSize Unlimited | Group-Object -Property Database | Select-Object Name, Count, @{n='Size(GB)';e={"{0:N2}" -f ($_.Group | ForEach-Object {(Get-MailboxStatistics $_.Identity).TotalItemSize.Value.ToGB()} | Measure-Object -Sum).Sum}} | Sort-Object Count -Descending
|
||||
```
|
||||
|
||||
_Este comando pode demorar um pouco pois calcula o tamanho total._
|
||||
|
||||
### Contagem de Usuários por Domínio de E-mail
|
||||
|
||||
Se você mistura clientes no mesmo banco, agrupe pelo domínio do e-mail:
|
||||
|
||||
```powershell
|
||||
Get-Mailbox -ResultSize Unlimited | Group-Object -Property @{E={$_.EmailAddresses | Where-Object {$_ -like "SMTP:*"} | ForEach-Object {$_.Split("@")[1]} | Select-Object -First 1}} | Select-Object Name, Count | Sort-Object Count -Descending
|
||||
```
|
||||
|
||||
### Relatório de Caixas "Gigantes" (Top 20)
|
||||
|
||||
Identificar quem está consumindo mais espaço.
|
||||
|
||||
```powershell
|
||||
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | Select-Object -First 20 DisplayName, @{n='Size(GB)';e={$_.TotalItemSize.Value.ToGB()}}, Database
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Manutenção de Logs e Espaço em Disco
|
||||
|
||||
### Truncamento de Logs (Log Truncation)
|
||||
|
||||
Os logs de transação (`.log`) do Exchange crescem infinitamente até que um **Backup Full** seja realizado.
|
||||
**NUNCA APAGUE ARQUIVOS .LOG MANUALMENTE.** Isso corrompe o banco.
|
||||
|
||||
**Procedimento Correto:**
|
||||
|
||||
1. Execute sua ferramenta de backup (Veeam, Windows Server Backup) com suporte a VSS/Exchange.
|
||||
2. Ao finalizar o backup com sucesso, o Exchange apaga os logs antigos automaticamente.
|
||||
|
||||
**Procedimento de Emergência (Disco Cheio): Habilitar Circular Logging**
|
||||
Se o disco de logs encher e o banco desmontar:
|
||||
|
||||
1. Hablite o Circular Logging (apaga logs assim que escritos no DB).
|
||||
```powershell
|
||||
Set-MailboxDatabase "NOME_DO_BANCO" -CircularLoggingEnabled $true
|
||||
```
|
||||
2. Desmonte e Monte o banco para aplicar (Gera downtime de segundos/minutos).
|
||||
```powershell
|
||||
Dismount-Database "NOME_DO_BANCO" -Confirm:$false
|
||||
Mount-Database "NOME_DO_BANCO"
|
||||
```
|
||||
3. **Importante:** Desabilite assim que resolver o espaço e fizer backup, pois o Circular Logging impede recuperação "point-in-time".
|
||||
|
||||
### Backup Manual via Linha de Comando (Wbadmin)
|
||||
|
||||
Como o servidor é Core, não há "wbadmin.msc". Use o comando abaixo para realizar um Backup Full (VSS Real) que trunca os logs corretamente.
|
||||
|
||||
1. **Instalar o Recurso (se não tiver):**
|
||||
|
||||
```powershell
|
||||
Install-WindowsFeature Windows-Server-Backup
|
||||
```
|
||||
|
||||
2. **Identificar os Volumes:**
|
||||
Use `Get-Volume` para saber onde estão seus Logs (ex: E:) e onde salvará o backup (ex: F: ou Share de Rede).
|
||||
|
||||
3. **Executar Backup VSS Full:**
|
||||
Este comando faz backup do volume E: (Logs/DB), salva em F: (Backup), e marca como VSS Full para limpar os logs.
|
||||
|
||||
```cmd
|
||||
wbadmin start backup -backupTarget:F: -include:E: -vssFull -quiet
|
||||
```
|
||||
|
||||
_Nota: Substitua E: e F: pelas letras corretas._
|
||||
|
||||
**Se falhar:** Verifique se o disco de destino tem espaço ou se o serviço `Volume Shadow Copy` está rodando.
|
||||
|
||||
---
|
||||
|
||||
## 3. Importação e Exportação (PST)
|
||||
|
||||
### Pré-requisitos
|
||||
|
||||
1. O usuário que roda o comando precisa de permissão explicita:
|
||||
```powershell
|
||||
New-ManagementRoleAssignment -Role "Mailbox Import Export" -User "DOMINIO\Administrador"
|
||||
```
|
||||
_Feche e abra o PowerShell após rodar isso._
|
||||
2. É obrigatório usar um caminho de rede (UNC) compartilhado (ex: `\\SRVCGDVIEXCH001\PSTs`), mesmo que esteja no próprio servidor. O serviço `Exchange Trusted Subsystem` precisa de permissão de Leitura/Gravação nessa pasta.
|
||||
|
||||
### Exportar Caixa para PST
|
||||
|
||||
```powershell
|
||||
New-MailboxExportRequest -Mailbox "usuario" -FilePath "\\172.16.150.150\share\usuario.pst"
|
||||
```
|
||||
|
||||
### Importar PST para Caixa
|
||||
|
||||
```powershell
|
||||
New-MailboxImportRequest -Mailbox "usuario" -FilePath "\\172.16.150.150\share\backup_antigo.pst"
|
||||
```
|
||||
|
||||
### Acompanhar o Andamento
|
||||
|
||||
```powershell
|
||||
Get-MailboxExportRequest | Get-MailboxExportRequestStatistics
|
||||
# ou
|
||||
Get-MailboxImportRequest | Get-MailboxImportRequestStatistics
|
||||
```
|
||||
|
||||
### Limpar Requisições Concluídas
|
||||
|
||||
O Exchange não limpa o histórico sozinho.
|
||||
|
||||
```powershell
|
||||
Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest -Confirm:$false
|
||||
```
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
# [Nível 3] Renovação de Certificado SSL e Integração com IIS
|
||||
|
||||
**Público Alvo:** Infraestrutura
|
||||
**Criticidade:** Alta (Se expirar, ninguém acessa o Webmail/Outlook).
|
||||
|
||||
## Cenário
|
||||
|
||||
Usamos o **Certify The Web** (cliente a) para renovar o certificado `mail.itguys.com.br` automaticamente a cada 60-90 dias.
|
||||
|
||||
## 1. Verificando o Erro
|
||||
|
||||
Se o navegador diz "Sua conexão não é particular":
|
||||
|
||||
1. Abra o aplicativo **Certify The Web** no servidor.
|
||||
2. Veja o status do domínio. Se estiver vermelho, clique em **Request Certificate** para tentar forçar.
|
||||
3. Se der erro de "Challenge", verifique se a porta 80 está liberada no Firewall para o mundo (o Let's Encrypt precisa validar).
|
||||
|
||||
## 2. Aplicando o Certificado no IIS (Manual)
|
||||
|
||||
Se o Certify renovou, mas o Exchange continua servindo o certificado velho:
|
||||
|
||||
1. Abra o **IIS Manager**.
|
||||
2. Clique em **Default Web Site**.
|
||||
3. No painel direito, clique em **Bindings...** (Associações).
|
||||
4. Selecione a linha `https` (porta 443) e clique em **Edit**.
|
||||
5. No campo **SSL Certificate**, selecione o certificado mais novo (verifique a data clicando em View).
|
||||
6. Repita para o site **Exchange Back End** (porta 444).
|
||||
7. Abra o CMD e reinicie o IIS:
|
||||
```cmd
|
||||
iisreset
|
||||
```
|
||||
|
||||
## 3. Aplicando nos Serviços de SMTP/IMAP (PowerShell)
|
||||
|
||||
Além do IIS, o backend do Exchange precisa saber do certificado novo.
|
||||
|
||||
1. Pegue o Thumbprint do novo certificado:
|
||||
```powershell
|
||||
Get-ExchangeCertificate | Select Thumbprint, Subject, NotAfter
|
||||
```
|
||||
2. Ative os serviços:
|
||||
```powershell
|
||||
Enable-ExchangeCertificate -Thumbprint "COLE_O_THUMBPRINT_AQUI" -Services "IIS,SMTP,IMAP,POP"
|
||||
```
|
||||
_Responda "Não" se ele perguntar sobre substituir o certificado padrão, a menos que saiba o que está fazendo._
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
# Documentação Oficial: Exchange Server
|
||||
|
||||
Este documento mantém os detalhes de configuração e infraestrutura do servidor Exchange da organização.
|
||||
|
||||
## 1. Infraestrutura do Servidor
|
||||
|
||||
| Item | Detalhe |
|
||||
| :------------------ | :-------------------------- |
|
||||
| **Hostname** | `SRVCGDVIEXCH001` |
|
||||
| **Versão** | Exchange Server 2019 |
|
||||
| **Build** | Version 15.2 (Build 1544.4) |
|
||||
| **Funções (Roles)** | Caixa de Correio (Mailbox) |
|
||||
| **Licenciamento** | Licenciado (Empresa) |
|
||||
|
||||
## 2. Organização e Destinatários
|
||||
|
||||
### Contas Administrativas Principais
|
||||
|
||||
- **Admin Principal**: `adm@zstation.com.br` (`Administração - Zstation`)
|
||||
- **Admin Local**: `Administrator@exch.local`
|
||||
|
||||
### Exemplo de Estrutura de Nomenclatura (Recipients)
|
||||
|
||||
Baseado nos usuários visíveis, a estrutura de e-mail segue múltiplos domínios (multi-tenant ou organização complexa).
|
||||
|
||||
| Nome de Exibição | E-mail | Tipo |
|
||||
| :---------------------------------- | :------------------------------ | :------ |
|
||||
| Administração - Zstation | `adm@zstation.com.br` | Usuário |
|
||||
| Administrativo - Regional Itaguaí 2 | `adm.regionalitg2@enseg.com.br` | Usuário |
|
||||
| Administrativo - Regional São Paulo | `adm.regionalsp2@enseg.com.br` | Usuário |
|
||||
| Administrativo - Unidade ECO 101 | `adm.eco101@enseg.com.br` | Usuário |
|
||||
| Adriana Souza | `adriana.souza@oestepan.com` | Usuário |
|
||||
| Aerodromo SJK Airport | `sescinc.sjk@enseg.com.br` | Usuário |
|
||||
| Agendamento Integramed | `gestao01@integramedbr.com.br` | Usuário |
|
||||
|
||||
## 3. Configurações de Fluxo de E-mail (A Fazer)
|
||||
|
||||
> **Nota:** Esta seção necessita de mais detalhes.
|
||||
|
||||
- [ ] **Conectores de Envio (Send Connectors)**
|
||||
- [ ] **Conectores de Recebimento (Receive Connectors)**
|
||||
- [ ] **Domínios Aceitos (Accepted Domains)**: `zstation.com.br`, `enseg.com.br`, `oestepan.com`, `integramedbr.com.br`, `exch.local` (inferidos).
|
||||
|
||||
## 4. Certificados e Segurança (A Fazer)
|
||||
|
||||
- [ ] Detalhes do Certificado SSL
|
||||
- [ ] URLs OWA/ECP
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
# Manual de Administração Sênior (N3) - Exchange Server 2019
|
||||
|
||||
**Público Alvo:** Administradores Sênior / Arquitetos
|
||||
**Objetivo:** Manutenção profunda, saúde do servidor e arquitetura.
|
||||
|
||||
## 1. Visão Geral da Infraestrutura
|
||||
|
||||
- **Servidor:** `SRVCGDVIEXCH001`
|
||||
- **Versão:** Exchange Server 2019 (Build 1544.4)
|
||||
- **Função:** Mailbox Role (Híbrido de CAS/MBX na arquitetura 2016/2019).
|
||||
|
||||
## 2. Monitoramento de Saúde (Health Check)
|
||||
|
||||
### Verificar Banco de Dados (Database Copy Status)
|
||||
|
||||
Use o **Exchange Management Shell (EMS)**. Nunca use o CMD padrão.
|
||||
|
||||
```powershell
|
||||
Get-MailboxDatabaseCopyStatus *
|
||||
```
|
||||
|
||||
- **Status Esperado:** `Mounted`
|
||||
- **Content Index State:** `Healthy`
|
||||
|
||||
Se estiver `Failed` ou `Suspended`, investigue logs de evento (Application).
|
||||
|
||||
### Filas de Transporte (Transport Queues)
|
||||
|
||||
Verificar se há e-mails travados.
|
||||
|
||||
```powershell
|
||||
Get-Queue
|
||||
```
|
||||
|
||||
- **MessageCount:** Deve estar baixo (0-50 em operação normal).
|
||||
- Se alto, verifique DNS, espaço em disco ou bloqueios de spam.
|
||||
|
||||
### Serviços do Exchange
|
||||
|
||||
Verificar se todos os serviços essenciais estão rodando.
|
||||
|
||||
```powershell
|
||||
Test-ServiceHealth
|
||||
```
|
||||
|
||||
## 3. Gestão Avançada de Fluxo (Mail Flow)
|
||||
|
||||
### Conectores (Send/Receive Connectors)
|
||||
|
||||
Localizados em **Fluxo de e-mails** no ECP.
|
||||
|
||||
- **Receive Connectors:** Controlam quem pode enviar e-mail PARA este servidor (ex: Relay de impressoras, aplicações internas).
|
||||
- **Send Connectors:** Controlam como este servidor envia para a internet (ex: via Smart Host ou DNS direto).
|
||||
|
||||
**Dica:** Ao criar relays para impressoras, sempre restrinja por IP no Receive Connector "Relay Interno" para evitar Open Relay.
|
||||
|
||||
## 4. Certificados SSL
|
||||
|
||||
Local: **Servidores** > **Certificados**.
|
||||
|
||||
- Monitore a data de expiração.
|
||||
- Serviços associados comuns: IIS, SMTP.
|
||||
- Renovação deve ser planejada com antecedência para evitar erro de certificado no Outlook/OWA.
|
||||
|
||||
## 5. Logs e Auditoria
|
||||
|
||||
Logs importantes para troubleshooting avançado:
|
||||
|
||||
- **SMTP Logs:** `C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\MessageTracking`
|
||||
- **IIS Logs:** `C:\inetpub\logs\LogFiles` (para erros de OWA/ActiveSync).
|
||||
|
||||
## 6. Disaster Recovery (Conceitos)
|
||||
|
||||
Em caso de falha crítica do servidor `SRVCGDVIEXCH001`:
|
||||
|
||||
1. **Recuperação de Banco (Dial Tone):** Montar banco vazio para fluxo imediato enquanto restaura backup.
|
||||
2. **Recovery Database (RDB):** Para restaurar itens específicos de um backup sem desmontar o banco produção.
|
||||
3. **Database Portability:** Mover o arquivo `.edb` para outro servidor Exchange (se houver) e montar.
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
# Referência Técnica e Arquitetura - Exchange Server
|
||||
|
||||
Este documento detalha a "caixa preta" da infraestrutura de e-mail.
|
||||
|
||||
## 1. Mapa da Infraestrutura
|
||||
|
||||
| Componente | Detalhe |
|
||||
| :---------------------- | :---------------------------------- |
|
||||
| **Hostname** | `SRVCGDVIEXCH001` |
|
||||
| **FQDN Interno** | `srvcgdviexch001.exch.local` |
|
||||
| **URL Externa** | `https://webmail.itguys.com.br` |
|
||||
| **Versão** | Exchange Server 2019 (Build 1544.4) |
|
||||
| **Sistema Operacional** | Windows Server |
|
||||
|
||||
## 2. Bancos de Dados (Mailbox Databases)
|
||||
|
||||
Segregação Multi-Tenant por cliente.
|
||||
|
||||
| Nome do Banco | Status |
|
||||
| :---------------------- | :---------------- |
|
||||
| `ANATRAM` | Montado |
|
||||
| `ENSEG - Local` | Montado |
|
||||
| `ENSEG disco E` | Montado |
|
||||
| `Ferreira Real` | Montado |
|
||||
| `Grupo PraLog` | Montado |
|
||||
| `IntegraMedBR` | Montado |
|
||||
| `IronZoneBR disco G` | Montado |
|
||||
| `iT Guys` | Montado |
|
||||
| `Mailbox Database 0...` | Montado (Default) |
|
||||
| `Oeste Pan` | Montado |
|
||||
| `Trois Cents` | Montado |
|
||||
| `Z Station` | Montado |
|
||||
|
||||
## 3. Domínios Aceitos (Accepted Domains)
|
||||
|
||||
Configuração mista de roteamento.
|
||||
|
||||
### Autoritativos (Hospedagem Local)
|
||||
|
||||
O Exchange é o destino final destas mensagens.
|
||||
|
||||
- `alefferramentas.com.br`
|
||||
- `anatram.com.br`
|
||||
- `exch.local`
|
||||
- `ferreirareal.com.br`
|
||||
- `integramedbr.com.br`
|
||||
- `oestepan.com`
|
||||
- `verbocampogranderj.com.br`
|
||||
- `vivencialcare.com.br`
|
||||
- `zstation.com.br`
|
||||
|
||||
### Retransmissão Interna (Internal Relay)
|
||||
|
||||
O Exchange aceita e pode repassar para outro servidor se o usuário não existir localmente.
|
||||
|
||||
- `enseg.com.br`
|
||||
- `grupopralog.com.br`
|
||||
- `ironzonebr.com.br`
|
||||
- `itguys.com.br`
|
||||
- `mangiaads.com.br`
|
||||
- `petytransportes.com.br`
|
||||
- `pralog.com.br`
|
||||
- `troiscents.com.br`
|
||||
|
||||
## 4. Políticas de E-mail (Address Policies)
|
||||
|
||||
Define o formato automático de e-mail (ex: `nome.sobrenome@empresa.com`).
|
||||
**Ordem de Prioridade:**
|
||||
|
||||
1. `IVVCG`
|
||||
2. `iT Guys`
|
||||
3. `ANATRAM`
|
||||
4. `Ferreira Real`
|
||||
5. ... (Segue lista específica por cliente até a prioridade 14)
|
||||
|
||||
## 5. Fluxo de E-mail (Connectors)
|
||||
|
||||
### Conectores de Envio (Send Connectors)
|
||||
|
||||
Define como enviar para fora.
|
||||
|
||||
- **`365`**: Rota dédiée via **Smart Host** (`itguys-com-br.mail.protection.outlook.com`).
|
||||
- **Domínios Roteados:** `*.tangente.cnt.br`, `*.prevcarauto.com.br`, `*.arteris.com.br`, `*.viario.com.br`, `*.azulrio.com.br`, `*.neutrocarbon.com.br`, `*.fraport-brasil.com`, `*.inextplus.com.br`.
|
||||
- **Custo:** 1 (Prioritário para estes domínios).
|
||||
- **`MX`**: Rota padrão para internet (DNS MX records).
|
||||
- **Endereço:** `*` (Todos os outros domínios).
|
||||
- **Custo:** 2.
|
||||
|
||||
### Conectores de Recebimento (Receive Connectors)
|
||||
|
||||
Define quem pode conectar no servidor.
|
||||
|
||||
- **Padrões:** `Client Frontend` (Porta 587), `Default Frontend` (Porta 25).
|
||||
- **Relays de Aplicação (Customizados):**
|
||||
- `Conector ENSEG`
|
||||
- `Conector ITGUYS`
|
||||
- `Conector Sistemas Internos ITGUYS`
|
||||
- `NOC Op Manager` (Desabilitado)
|
||||
|
||||
## 6. Regras e Segurança
|
||||
|
||||
- **Regras de Transporte:** Remoção de IP (`X-Originating-IP`) e cópias ocultas para auditoria.
|
||||
- **Certificados:** `mail.itguys.com.br` (Válido até 2026 via Certify).
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
# Manual de Operações e Manutenção - Exchange 2019
|
||||
|
||||
**Público Alvo:** Nível 3 (SysAdmin / Infraestrutura)
|
||||
**Servidor:** `SRVCGDVIEXCH001`
|
||||
|
||||
---
|
||||
|
||||
## 1. Checklists de Manutenção
|
||||
|
||||
### Diário (Rotina Matinal)
|
||||
|
||||
- [ ] **Verificar Filas de E-mail:**
|
||||
```powershell
|
||||
Get-Queue
|
||||
```
|
||||
_Meta:_ `MessageCount` deve ser zero ou baixo. Se > 50, investigar.
|
||||
- [ ] **Saúde dos Bancos de Dados:**
|
||||
```powershell
|
||||
Get-MailboxDatabaseCopyStatus *
|
||||
```
|
||||
_Meta:_ Status `Mounted` e ContentIndex `Healthy`.
|
||||
- [ ] **Disco do Sistema e Logs:**
|
||||
Verificar espaço livre nos discos C: (Sistema) e onde estão os DBs/Logs. Exchange para de receber e-mails se o disco de logs tiver < 10% livre (Back Pressure).
|
||||
|
||||
### Semanal
|
||||
|
||||
- [ ] **Verificar Backups:** Validar se o backup full do fim de semana e incrementais ocorreram. O backup VSS deve truncar (apagar) os logs de transação antigos. Se os logs (arquivos `.log`) estiverem acumulando, o backup não está funcionando.
|
||||
- [ ] **Reiniciar Serviços (Se necessário):** Apenas se notar consumo excessivo de RAM pelo `w3wp.exe` (IIS) ou lentidão.
|
||||
|
||||
### Mensal
|
||||
|
||||
- [ ] **Windows Updates:** Aplicar patches de segurança do SO.
|
||||
_Atenção:_ Sempre colocar o servidor em _Maintenance Mode_ antes se houver cluster/DAG (não aplicável em servidor único, mas requer janela).
|
||||
- [ ] **Certificados SSL:** Verificar validade.
|
||||
```powershell
|
||||
Get-ExchangeCertificate | Select Subject, NotAfter
|
||||
```
|
||||
Renovar se faltar < 30 dias.
|
||||
|
||||
## 2. Monitoramento de Serviços (PowerShell)
|
||||
|
||||
Script rápido para validar se todos os serviços críticos estão rodando:
|
||||
|
||||
```powershell
|
||||
Test-ServiceHealth
|
||||
```
|
||||
|
||||
## 3. Disaster Recovery (DR) Básico
|
||||
|
||||
### Cenário: Banco de Dados Corrompido
|
||||
|
||||
Se o banco desmontar e não montar mais:
|
||||
|
||||
1. **ESEUTIL /MH:** Verifique o estado (`Dirty Shutdown` ou `Clean Shutdown`).
|
||||
2. **Reparo (Soft Recovery):** `Eseutil /r "E00" /l "C:\Path\Logs" /d "C:\Path\DB"`
|
||||
3. **Reparo Hard (Último caso):** `Eseutil /p` (Pode haver perda de dados).
|
||||
|
||||
### Cenário: Restore de E-mail Apagado (Single Item Recovery)
|
||||
|
||||
Se o usuário apagou da lixeira e precisa recuperar (dentro do período de retenção, padrão 14 dias):
|
||||
|
||||
1. Use o comando `Search-Mailbox` (se disponível) ou `New-MailboxRestoreRequest` via backup.
|
||||
2. Recuperar itens excluídos (Recoverable Items) é possível via Outlook do próprio usuário também ("Recuperar itens excluídos do servidor").
|
||||
|
||||
## 4. Atualizações de Exchange (CU/SU)
|
||||
|
||||
**Regra de Ouro:**
|
||||
|
||||
1. Verifique sempre os pré-requisitos de .NET Framework para o Cumulative Update (CU) novo.
|
||||
2. Execute `Setup.exe /PrepareSchema` e `/PrepareAD` se o CU exigir atualização de esquema.
|
||||
3. Instale o CU via CMD Admin: `Setup.exe /m:Upgrade /IAcceptExchangeServerLicenseTerms`.
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Manual de Service Desk & Troubleshooting - Exchange 2019
|
||||
|
||||
**Público Alvo:** Nível 1 e Nível 2 (Suporte/Helpdesk)
|
||||
**Escopo:** Diagnóstico e resolução de incidentes comuns de e-mail no ambiente `itguys.com.br`.
|
||||
|
||||
---
|
||||
|
||||
## 1. Matriz de Casos de Atendimento (Troubleshooting)
|
||||
|
||||
| Sintoma (O que o usuário diz) | Causa Provável | Ação de Resolução (Passo a Passo) |
|
||||
| :-------------------------------------- | :---------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **"Não recebi um e-mail externo"** | Retido no Antispam ou Regra de Transporte | 1. Acesse o ECP > Fluxo de e-mails > **Relatórios de entrega**. <br> 2. Verifique se há uma regra de **Redirecionamento** ativa (ex: regras para `natalia.fabio`, `samir.mendonca`). O e-mail pode ter ido para outra pessoa. |
|
||||
| **"Meu Outlook pede senha toda hora"** | Credencial incorreta ou Certificado | 1. Feche o Outlook. <br> 2. Remova credenciais antigas no **Gerenciador de Credenciais** do Windows. <br> 3. Valide se a data do certificado `mail.itguys.com.br` não expirou. |
|
||||
| **"E-mail volta com erro (NDR)"** | Endereço errado ou caixa cheia | 1. Peça o código (ex: `5.2.2`). <br> 2. Valide se a caixa do usuário está no banco de dados correto (ex: `ENSEG - Local`, `Z Station`). |
|
||||
| **"Outlook no celular não sincroniza"** | Quarentena móvel | 1. No ECP > Usuário > **Recursos de Telefone**. <br> 2. Verifique quarentena de dispositivo. |
|
||||
| **"Preciso da senha do Wi-Fi/VPN"** | N/A | (Escopo fora do Exchange, redirecionar para Infra). |
|
||||
|
||||
## 2. Atenção às Regras de Fluxo (Transport Rules)
|
||||
|
||||
Este ambiente possui muitas regras de **Cópias Ocultas (BCC)** e **Redirecionamentos** para fins fiscais (`NFE Grupo Pralog`) e auditoria (`DPO Enseg`).
|
||||
|
||||
- **Sintoma:** Usuário reclama que o chefe recebe cópia de tudo.
|
||||
- **Validação:** Verifique as regras em _Fluxo de e-mails > Regras_ no ECP antes de dizer que é "vírus".
|
||||
|
||||
## 3. Ferramentas Essenciais
|
||||
|
||||
### ECP (Exchange Control Panel)
|
||||
|
||||
- **URL:** `https://webmail.itguys.com.br/ecp`
|
||||
- **Login:** Admin.
|
||||
|
||||
### Message Trace (Rastreamento)
|
||||
|
||||
Ferramenta principal para provar o destino do e-mail.
|
||||
|
||||
- **Status "Redirected":** Significa que uma regra moveu a mensagem.
|
||||
|
||||
## 4. Procedimentos Comuns
|
||||
|
||||
### Desbloquear Conta
|
||||
|
||||
Feito no Active Directory. O Exchange apenas lê o status.
|
||||
|
||||
### Verificar Cota
|
||||
|
||||
Importante: Como há muitos bancos de dados (`ANATRAM`, etc.), verifique se o usuário não está em um banco com limite mais restrito que os outros.
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
# Manual de Suporte Nível 1 (N1) - Exchange Server 2019
|
||||
|
||||
**Público Alvo:** Helpdesk / Service Desk
|
||||
**Objetivo:** Guia para tarefas operacionais diárias no Exchange Server.
|
||||
|
||||
## 1. Acesso ao Painel de Controle (ECP)
|
||||
|
||||
O gerenciamento é feito via navegador.
|
||||
|
||||
- **URL**: `https://SRVCGDVIEXCH001/ecp` (ou URL pública se houver)
|
||||
- **Login**: Utilize suas credenciais administrativas.
|
||||
|
||||
## 2. Gerenciamento de Caixas de Correio (Mailboxes)
|
||||
|
||||
### Criar uma Nova Caixa
|
||||
|
||||
1. Acesse **Destinatários** > **Caixas de Correio**.
|
||||
2. Clique no ícone **+** (Adicionar) e selecione **Caixa de Correio do Usuário**.
|
||||
3. Se o usuário já existe no AD, selecione "Usuário Existente" e busque pelo nome.
|
||||
4. Se for um novo usuário, preencha os dados (Nome, Sobrenome, Login, Senha).
|
||||
5. Clique em **Salvar**.
|
||||
|
||||
### Alterar Senha de Usuário
|
||||
|
||||
_Nota: Geralmente feito no Active Directory (AD), mas se integrado:_
|
||||
|
||||
1. Localize o usuário no AD ou interface de gestão de identidade.
|
||||
2. Defina a nova senha e marque "O usuário deve alterar a senha no próximo logon" se política da empresa.
|
||||
|
||||
## 3. Permissões de Acesso
|
||||
|
||||
### Conceder Acesso Total (Full Access)
|
||||
|
||||
Permite que um usuário abra a caixa de outro.
|
||||
|
||||
1. Em **Caixas de Correio**, selecione a caixa de destino (ex: `Caixa Compartilhada RH`).
|
||||
2. Clique no ícone **Lápis** (Editar).
|
||||
3. Vá em **Delegação de Caixa de Correio**.
|
||||
4. Em **Acesso Total**, clique no **+** e adicione o usuário que precisa do acesso.
|
||||
5. **Salvar**.
|
||||
|
||||
### Enviar Como (Send As)
|
||||
|
||||
Permite enviar e-mail fingindo ser a caixa.
|
||||
|
||||
1. Mesmo caminho acima, mas adicione o usuário na seção **Enviar Como**.
|
||||
|
||||
## 4. Diagnóstico Básico (Troubleshooting)
|
||||
|
||||
### Rastreamento de Mensagens (Message Trace/Delivery Reports)
|
||||
|
||||
O usuário diz que "não recebeu o e-mail".
|
||||
|
||||
1. Vá em **Fluxo de e-mails** > **Relatórios de entrega**.
|
||||
2. Selecione a caixa de correio a pesquisar (remetente ou destinatário).
|
||||
3. Busque pelo assunto ou destinatário.
|
||||
4. O relatório dirá se foi **Entregue**, **Falhou** ou está **Pendente**.
|
||||
|
||||
## 5. Respostas Automáticas (Out of Office)
|
||||
|
||||
Configurar para um usuário que esqueceu antes de sair de férias.
|
||||
|
||||
1. No ECP, clique na foto do seu usuário (canto superior direito) > **Outro Usuário...**.
|
||||
2. Selecione a caixa do usuário desejado.
|
||||
3. Uma nova janela abrirá simulando o login dele.
|
||||
4. Vá em **Organizar E-mail** > **Respostas Automáticas**.
|
||||
5. Configure a mensagem e o período. Salve.
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
# Manual do Usuário: Webmail e Outlook
|
||||
|
||||
**Público Alvo:** Todos os Colaboradores
|
||||
**Serviço:** E-mail Corporativo (Exchange Server 2019)
|
||||
|
||||
---
|
||||
|
||||
## 1. Acesso ao Webmail (OWA)
|
||||
|
||||
O Outlook Web App (OWA) permite acessar seu e-mail de qualquer navegador.
|
||||
|
||||
- **Endereço de Acesso:** [https://webmail.itguys.com.br](https://webmail.itguys.com.br)
|
||||
- **Login:** Seu e-mail completo (ex: `usuario@zstation.com.br`)
|
||||
- **Senha:** A mesma utilizada para logar no computador/rede.
|
||||
|
||||
### Principais Funcionalidades
|
||||
|
||||
1. **Enviar E-mail:** Clique em **Novo** (canto superior esquerdo).
|
||||
2. **Calendário:** Clique no ícone de calendário no canto inferior esquerdo para agendar reuniões.
|
||||
3. **Buscar Pessoas:** Use a barra de busca "Pesquisar" no topo para encontrar contatos da empresa (Lista de Endereços Global).
|
||||
|
||||
## 2. Auto-Atendimento
|
||||
|
||||
### Configurar Resposta Automática (Férias)
|
||||
|
||||
1. No Webmail, clique na **Engrenagem** (Configurações) no canto superior direito.
|
||||
2. Selecione **Respostas automáticas**.
|
||||
3. Marque **Enviar respostas automáticas**.
|
||||
4. Defina o **Período** (Data de início e fim).
|
||||
5. Escreva sua mensagem para remetentes internos e externos.
|
||||
6. Clique em **OK**.
|
||||
|
||||
### Alterar Senha
|
||||
|
||||
1. No Webmail, clique na **Engrenagem** > **Opções**.
|
||||
2. Expanda **Geral** > **Minha conta**.
|
||||
3. Clique em **Alterar sua senha** (se disponível pela política da empresa).
|
||||
- _Nota:_ Caso não apareça, a alteração deve ser feita via `Ctrl+Alt+Del` no Windows.
|
||||
|
||||
### Caixa de E-mail Cheia?
|
||||
|
||||
Se receber o aviso de "Cota Excedida":
|
||||
|
||||
1. Apague e-mails da **Lixeira** (Itens Excluídos).
|
||||
2. Verifique a pasta **Enviados** e apague anexos grandes antigos.
|
||||
3. Esvazie a pasta **Lixo Eletrônico**.
|
||||
|
||||
## 3. Configuração no Celular (Outlook Mobile)
|
||||
|
||||
Recomendamos o uso do app oficial **Microsoft Outlook** (Android/iOS).
|
||||
|
||||
1. Baixe o app **Microsoft Outlook**.
|
||||
2. Digite seu e-mail completo.
|
||||
3. Se pedir o tipo de conta, escolha **Exchange**.
|
||||
4. Se solicitar configurações avançadas:
|
||||
- **Servidor:** `webmail.itguys.com.br`
|
||||
- **Domínio/Usuário:** `seu_email@dominio.com.br`
|
||||
- **Senha:** Sua senha de rede.
|
||||
|
||||
## 4. Segurança (Fique Atento!)
|
||||
|
||||
- **Phishing:** A TI nunca pede sua senha por e-mail. Desconfie de links suspeitos.
|
||||
- **Bloqueio:** Se errar a senha muitas vezes, sua conta será bloqueada por segurança. Contate o Service Desk.
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# Visão Geral e Escopo - Suporte Nível 1 (N1)
|
||||
|
||||
## 1. Introdução
|
||||
|
||||
Este manual destina-se aos técnicos de Service Desk e Suporte Nível 1. O objetivo é fornecer as diretrizes básicas para atendimento de chamados relacionados à infraestrutura virtualizada VMware vSphere 8.0.
|
||||
|
||||
O Nível 1 é a linha de frente. Sua responsabilidade é **triar**, **validar** e **resolver problemas básicos** ou escalonar corretamente para o Nível 2.
|
||||
|
||||
## 2. Ferramentas de Trabalho
|
||||
|
||||
A principal ferramenta de trabalho é o **vSphere Client** (interface HTML5).
|
||||
|
||||
- **URL de Acesso:** `https://<vcenter-address>/ui`
|
||||
- **Credenciais:** Utilize suas credenciais de domínio (AD) ou o usuário fornecido pelo administrador.
|
||||
|
||||
## 3. Matriz de Responsabilidades (N1 vs N2)
|
||||
|
||||
| Atividade | Nível 1 (Service Desk) | Nível 2 (Admin/Ops) |
|
||||
| :---------- | :--------------------------------------------------------- | :---------------------------------------------------- |
|
||||
| **Acesso** | Login básico, reset de senha de usuário (AD) | Gestão de permissões no vCenter |
|
||||
| **VMs** | Verificar status, reiniciar (Guest), escalonar travamentos | Criar, excluir, alterar recursos (CPU/RAM), Snapshots |
|
||||
| **Alertas** | Monitorar e reportar alertas críticos | Investigar causa raiz e resolver alertas |
|
||||
| **Infra** | Não aplicável | Gestão de Hosts ESXi, Datastores e Networking |
|
||||
|
||||
## 4. Glossário Rápido
|
||||
|
||||
- **VM (Virtual Machine):** O computador virtual que o usuário acessa.
|
||||
- **Host (ESXi):** O servidor físico onde as VMs rodam.
|
||||
- **vCenter Server:** O "cérebro" que gerencia todos os Hosts e VMs.
|
||||
- **Guest OS:** O sistema operacional que roda DENTRO da VM (ex: Windows 10, Linux).
|
||||
- **VMware Tools:** Utilitário instalado no Guest OS para melhorar performance e gerenciamento.
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
# Verificação Básica de Máquina Virtual (VM)
|
||||
|
||||
## 1. Objetivo
|
||||
|
||||
Identificar rapidamente o estado de uma VM quando um usuário reporta "lentidão" ou "indisponibilidade".
|
||||
|
||||
## 2. Buscando uma VM
|
||||
|
||||
1. No topo do vSphere Client, localize a barra de pesquisa ("Search in all environments").
|
||||
2. Digite o **nome da VM**, **IP** ou **Hostname**.
|
||||
3. Clique no resultado correspondente para abrir o painel da VM.
|
||||
|
||||
## 3. Painel de Resumo (Summary Tab)
|
||||
|
||||
Ao selecionar a VM, a aba **Summary** é a mais importante. Verifique os seguintes quadros:
|
||||
|
||||
### A. Cabeçalho (Topo Esquerdo)
|
||||
|
||||
- **Nome:** Confirme se é a máquina correta.
|
||||
- **Guest OS:** Qual sistema operacional ela roda.
|
||||
- **Compatibility:** Versão do hardware virtual (ex: VM version 20).
|
||||
- **VMware Tools:**
|
||||
- `Running` (Verde): Ótimo, ferramentas ativas.
|
||||
- `Not running` (Cinza/Vermelho): Problema. O vCenter não consegue falar com o Sistema Operacional. Isso impede o "Soft Reboot".
|
||||
|
||||
### B. Quadro "Activity" ou Estado
|
||||
|
||||
Verifique se a VM está:
|
||||
|
||||
- **Powered On (Verde):** Ligada.
|
||||
- **Powered Off (Cinza):** Desligada.
|
||||
- **Suspended (Amarelo):** Pausada.
|
||||
|
||||
### C. Endereço IP
|
||||
|
||||
No quadro **IP Addresses**, verifique se há um IP listado.
|
||||
|
||||
- Se estiver em branco e a VM estiver ligada, é provável que o VMware Tools não esteja rodando ou haja um problema de rede no SO.
|
||||
|
||||
## 4. Acessando a Console
|
||||
|
||||
Se o usuário não consegue conectar via RDP/SSH, você deve tentar acessar a console da VM.
|
||||
|
||||
1. Clique em **Launch Web Console** (ou na miniatura da tela).
|
||||
- **Web Console:** Abre numa nova aba do navegador.
|
||||
- **VMRC (VMware Remote Console):** Abre num aplicativo dedicado (requer instalação).
|
||||
2. Se a tela aparecer (mesmo que seja erro de boot ou tela de login), a VM está funcionando. O problema provavelmente é **Rede** ou **Serviço do SO**.
|
||||
3. Se a tela ficar preta e não carregar, ou der erro de conexão, **Escalone para N2** (possível travamento de host).
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
# Operações de Energia: Reiniciar e Desligar
|
||||
|
||||
> [!WARNING] > **CUIDADO:** Reiniciar uma VM em produção pode causar perda de dados ou interrupção de serviço. Sempre confirme com o usuário ou verifique a janela de manutenção antes de prosseguir.
|
||||
|
||||
## 1. Tipos de Reinicialização
|
||||
|
||||
No vCenter, existem duas formas de desligar/reiniciar uma VM. É crucial entender a diferença.
|
||||
|
||||
### A. Guest OS (Recomendado - "Soft")
|
||||
|
||||
Envia um comando para o Windows/Linux fazer logoff e desligar corretamente. Exige **VMware Tools**.
|
||||
|
||||
- **Shut Down Guest OS:** "Iniciar > Desligar" do Windows.
|
||||
- **Restart Guest OS:** "Iniciar > Reiniciar" do Windows.
|
||||
|
||||
### B. Power Operations (Forçado - "Hard")
|
||||
|
||||
Corta a energia da VM. Equivale a puxar o cabo da tomada de um PC físico.
|
||||
|
||||
- **Power Off:** Desliga abruptamente. Use apenas se o Guest OS estiver travado.
|
||||
- **Reset:** Reinicia abruptamente.
|
||||
|
||||
## 2. Procedimento de Restart Padrão
|
||||
|
||||
1. Selecione a VM no inventário.
|
||||
2. Clique no menu **Actions** (ou botão direito no nome da VM).
|
||||
3. Vá em **Power** > **Restart Guest OS**.
|
||||
4. Confirme a mensagem de aviso.
|
||||
5. Acompanhe no painel "Recent Tasks" (rodapé da página) se a tarefa "Initiate Guest OS Reboot" foi concluída com sucesso.
|
||||
|
||||
## 3. O que fazer se a VM não responder?
|
||||
|
||||
Se você tentou "Restart Guest OS" e a VM continua travada após 5-10 minutos:
|
||||
|
||||
1. **Abra a Console** para ver se há alguma mensagem de erro (Tela Azul, Kernel Panic).
|
||||
2. Se o SO estiver completamente congelado:
|
||||
- Verifique se você tem autorização para um **Reset** forçado.
|
||||
- Se tiver: **Actions** > **Power** > **Reset**.
|
||||
3. Se o comando de Power/Reset falhar ou ficar "girando" indefinidamente:
|
||||
- **NÃO tente novamente várias vezes.**
|
||||
- **Escalone IMEDIATAMENTE para o Nível 2**. Isso indica um processo "zumbi" ou problema no Host ESXi.
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# Monitoramento Básico de Alertas e Recursos
|
||||
|
||||
## 1. Identificando Alertas
|
||||
|
||||
O vSphere usa um sistema de semáforo nos ícones das VMs e Hosts.
|
||||
|
||||
- **Verde (Normal):** Tudo OK.
|
||||
- **Amarelo (Warning):** Atenção necessária (ex: Uso de disco alto, Snapshot antigo, VMware Tools desatualizado).
|
||||
- **Vermelho (Critical):** Problema grave (ex: Host desconectado, Datastore cheio, VM sem rede).
|
||||
|
||||
### Onde ver o erro?
|
||||
|
||||
1. Clique na VM ou Host com alerta.
|
||||
2. Na aba **Summary**, procure pelo quadro **Triggered Alarms**.
|
||||
3. Leia a descrição. Ex: "Virtual machine memory usage is at 100%".
|
||||
|
||||
## 2. Monitorando Performance (Básico)
|
||||
|
||||
Se um usuário reclama de lentidão:
|
||||
|
||||
1. Vá na aba **Monitor** > **Overview** (ou Performance > Overview).
|
||||
2. Observe os gráficos de **CPU** e **Memory**.
|
||||
- **Uso Constante de 100%:** A VM está subdimensionada ou um processo travou.
|
||||
- _Ação:_ Verifique processos dentro do SO (Task Manager) ou escalone para N2 avaliar aumento de recursos.
|
||||
- **Uso Baixo:** O problema de lentidão não é falta de recurso da VM. Pode ser Rede, Storage ou Aplicação.
|
||||
|
||||
## 3. Alertas Comuns para Nível 1
|
||||
|
||||
| Alerta | Significado | Ação N1 |
|
||||
| :--------------------------------------- | :-------------------------------------- | :------------------------------------------------------------------------------ |
|
||||
| **Virtual machine consolidation needed** | Snapshots inconsistentes. | Escalonar para N2 (Risco de travar backup). |
|
||||
| **Virtual machine memory usage** | RAM alocada esgotada. | Verificar processos no SO. |
|
||||
| **Datastore usage on disk** | Disco físico onde a VM mora está cheio. | **CRÍTICO**. Escalonar IMEDIATAMENTE para N2/N3. Não crie Snapshots. |
|
||||
| **VMware Tools outdated** | Versão antiga dos drivers. | Planejar atualização (geralmente automático no reboot, mas verifique política). |
|
||||
|
||||
## 4. Como Escalonar
|
||||
|
||||
Ao passar um chamado para o Nível 2, informe OBRIGATORIAMENTE:
|
||||
|
||||
1. **Nome da VM** e **IP**.
|
||||
2. **Nome do Host** (onde ela está rodando).
|
||||
3. **Erro exato** ou print do Alarme.
|
||||
4. **O que já foi feito** (ex: "Tentei Restart Guest OS mas falhou", "Verifiquei que a CPU está em 10%").
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
# Gestão de Recursos: Computação e Migração
|
||||
|
||||
## 1. Modificando Recursos de uma VM (Hot Add vs Cold Add)
|
||||
|
||||
Aumentar CPU ou Memória é uma tarefa comum do Nível 2.
|
||||
|
||||
### A. Hot Add (Com a VM ligada)
|
||||
|
||||
Só funciona se a opção "Memory/CPU Hot Plug" estiver habilitada nas configurações da VM **ANTES** dela ser ligada.
|
||||
|
||||
1. Botão direito na VM > **Edit Settings**.
|
||||
2. Altere o valor de CPU ou Memory.
|
||||
3. Se o campo estiver cinza, é necessário desligar a VM.
|
||||
4. **Nota:** Mesmo com Hot Add no vSphere, o SO (Linux/Windows) nem sempre reconhece automaticamente; pode ser necessário um comando interno ou reboot.
|
||||
|
||||
### B. Cold Add (Com a VM desligada)
|
||||
|
||||
1. Desligue a VM (**Shut Down Guest OS**).
|
||||
2. Botão direito > **Edit Settings**.
|
||||
3. Ajuste os valores desejados.
|
||||
4. Clique em OK e religue a VM.
|
||||
|
||||
## 2. Resource Pools
|
||||
|
||||
Resource Pools servem para **dividir** recursos, não para limitar (a menos que configurado explicitamente).
|
||||
|
||||
- **Shares:** Definem prioridade em momentos de contenda (briga por recurso).
|
||||
- **Reservation:** Garante uma quantidade fixa de MHz/MB para aquele grupo. CUIDADO: Isso "trava" o recurso do Host.
|
||||
- **Limit:** Teto máximo. CUIDADO: Pode causar lentidão artificial se definido errado. **Evite usar Limits**.
|
||||
|
||||
## 3. vMotion (Migração de Compute)
|
||||
|
||||
Move a VM de um Host para outro sem desligar.
|
||||
|
||||
1. Botão direito na VM > **Migrate**.
|
||||
2. Selecione **Change compute resource only**.
|
||||
3. Escolha o Host de destino.
|
||||
- _Compatibility check:_ Verifique se aparece "Compatibility checks succeeded". Se der erro (ex: ISO montada localmente, Diferença de CPU), corrija antes.
|
||||
4. Finish.
|
||||
|
||||
## 4. Storage vMotion (Migração de Disco)
|
||||
|
||||
Move os arquivos da VM de um Datastore para outro. Útil para manutenção de storage ou balanceamento de espaço.
|
||||
|
||||
1. Botão direito na VM > **Migrate**.
|
||||
2. Selecione **Change storage only**.
|
||||
3. Escolha o Datastore de destino (Verifique o espaço livre!).
|
||||
4. Selecione o formato do disco (Same format as source, Thin Provision, Thick Provision).
|
||||
- **Thin:** Ocupa apenas o espaço usado.
|
||||
- **Thick:** Reserva todo o espaço imediatamente.
|
||||
5. Finish.
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
# Networking e Storage Operacional
|
||||
|
||||
## 1. vSwitch Standard (vSS) vs Distributed (vDS)
|
||||
|
||||
- **Standard Switch:** Configurado individualmente em cada Host. Configuração manual.
|
||||
- **Distributed Switch:** Configurado no vCenter e "empurrado" para os Hosts. Garante consistência.
|
||||
|
||||
### Tarefa Comum: Alterar Rede de uma VM
|
||||
|
||||
Se uma VM precisa mudar de VLAN:
|
||||
|
||||
1. Botão direito na VM > **Edit Settings**.
|
||||
2. Navegue até **Network Adapter**.
|
||||
3. No dropdown, selecione o **Port Group** correto (o nome geralmente indica a VLAN, ex: `VM_Network_VLAN10`).
|
||||
4. Certifique-se de que a caixa **Connected** está marcada.
|
||||
|
||||
## 2. Gestão de Datastores (VMFS)
|
||||
|
||||
### Monitoramento de Espaço
|
||||
|
||||
Um Datastore cheio (100%) **PAUSA todas as VMs** que dependem dele.
|
||||
|
||||
- Mantenha sempre 10-20% de buffer livre para Snapshots e arquivos de swap.
|
||||
|
||||
### Expandindo um Datastore
|
||||
|
||||
Se o time de Storage (SAN) entregou mais espaço na LUN:
|
||||
|
||||
1. Selecione o Datastore > aba **Configure**.
|
||||
2. **Increase Datastore Capacity**.
|
||||
3. Selecione o dispositivo (LUN) que foi expandido.
|
||||
4. Escolha usar o espaço livre ("Use free space..." ou especifique o tamanho).
|
||||
5. Finish. O aumento é imediato.
|
||||
|
||||
## 3. Snapshots: O que Fazer e o que NÃO Fazer
|
||||
|
||||
Snapshots **NÃO SÃO BACKUP**. Eles são pontos de restauração temporários.
|
||||
|
||||
### Boas Práticas
|
||||
|
||||
- Use antes de upgrades ou mudanças críticas.
|
||||
- **Duração Máxima:** 24 a 72 horas.
|
||||
- Não aninhe muitos snapshots (Cria cadeia complexa e lenta).
|
||||
|
||||
### Operações
|
||||
|
||||
- **Take Snapshot:**
|
||||
- _Snapshot the virtual machine's memory:_ Salva o estado da RAM (demora mais). Útil se precisar voltar com a VM ligada exatamente onde estava.
|
||||
- _Quiesce guest file system:_ Usa VMware Tools para "pausar" o disco e garantir consistência de arquivos (requer VSS no Windows).
|
||||
- **Delete / Delete All:**
|
||||
- Isso **consolida** os dados. O snapshot some e as mudanças são gravadas no disco base.
|
||||
- **Atenção:** Se o snapshot for antigo e grande, o "Delete" pode demorar HORAS e deixar a VM lenta ("Stun"). Faça fora do horário comercial se possível.
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# Manutenção e Lifecycle (Ciclo de Vida)
|
||||
|
||||
## 1. Maintenance Mode
|
||||
|
||||
Para realizar manutenção física num servidor ou atualizá-lo, ele deve estar em **Maintenance Mode**.
|
||||
|
||||
- O que acontece: Nenhuma VM pode rodar nele.
|
||||
- Se houver **DRS (Distributed Resource Scheduler)**: O vCenter tentará mover as VMs automaticamente (vMotion) para outros hosts.
|
||||
- Se não houver DRS/Automação: Você deve mover as VMs manualmente antes.
|
||||
|
||||
### Ativando
|
||||
|
||||
1. Botão direito no Host > **Maintenance Mode** > **Enter Maintenance Mode**.
|
||||
2. Opção "Move powered-off and suspended virtual machines...": Marque se quiser mover as desligadas também.
|
||||
3. Se o progresso travar em 2%: Geralmente há uma VM que não pode ser migrada (CD montado localmente, afinidade de CPU). Verifique os eventos.
|
||||
|
||||
## 2. vSphere Lifecycle Manager (vLCM)
|
||||
|
||||
Ferramenta para aplicar patches (Update) e upgrades (Upgrade) no ESXi.
|
||||
|
||||
### Update Básico (Patches de Segurança)
|
||||
|
||||
1. Vá na visão de **Cluster** ou **Host** > aba **Updates**.
|
||||
2. Verifique o status de **Image Compliance** ou **Baselines**.
|
||||
3. **Check Compliance:** Verifica o que falta.
|
||||
4. **Stage:** Baixa os arquivos para o host (prepara).
|
||||
5. **Remediate:** Aplica a atualização.
|
||||
- _Nota:_ O host precisará reiniciar (Reboot). Ele entra em Maintenance Mode automaticamente durante o processo.
|
||||
|
||||
## 3. vCenter Server Appliance (VCSA) Health
|
||||
|
||||
O Nível 2 deve checar periodicamente a saúde do próprio vCenter.
|
||||
|
||||
1. No vSphere Client, selecione o objeto vCenter (topo da árvore).
|
||||
2. Aba **Monitor** > **vCenter Server Health**.
|
||||
3. Verifique se todos os serviços estão `Healthy`.
|
||||
4. **Database:** Verifique se o banco de dados não está cheio (seat_usage, log_usage). Se estiver perto de 90%, avise o N3 para limpeza ou expansão.
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
# Troubleshooting Intermediário
|
||||
|
||||
## 1. Análise de Performance Avançada
|
||||
|
||||
Quando o usuário diz "está lento", mas o N1 não vê CPU em 100%.
|
||||
|
||||
### Métricas Chave (Advanced Charts)
|
||||
|
||||
Vá em **Monitor** > **Performance** > **Advanced**.
|
||||
|
||||
1. **CPU Ready (%RDY):**
|
||||
- Tempo que a VM quer processar mas o Host não deixa (fila).
|
||||
- **> 5% (por vCPU):** Contenção. O Host está sobrecarregado (Overcommitment).
|
||||
- _Solução:_ Mover a VM para um host mais vazio; diminuir vCPUs da VM (sim, diminuir pode ajudar se houver muita 'co-stop').
|
||||
2. **Memory Balloon / Swap:**
|
||||
- Se `Ballooned` > 0 ou `Swapped` > 0: A VM está sofrendo falta de RAM física no Host.
|
||||
- _Solução:_ Adicionar RAM no Host ou migrar VMs.
|
||||
3. **Disk Latency (Latência):**
|
||||
- **Kernel Latency (KAVG):** Tempo no kernel do ESXi. Alto = Host sobrecarregado.
|
||||
- **Device Latency (DAVG):** Tempo no Storage Array. Alto = Storage lento.
|
||||
- **Total Latency (GAVG):** KAVG + DAVG.
|
||||
- _Referência:_ < 10ms (Excelente), 10-20ms (Aceitável), > 30ms (Problema perceptível).
|
||||
|
||||
## 2. Tarefas e Eventos (Tasks & Events)
|
||||
|
||||
O histórico do vCenter é seu melhor amigo para auditoria e diagnósticos.
|
||||
|
||||
- Aba **Monitor** > **Tasks & Events**.
|
||||
- **Tasks:** Quem fez o quê e quando? (Ex: Quem desligou a VM? Quem criou o snapshot?).
|
||||
- **Events:** Erros de sistema (Ex: Perda de redundância de rede, falha de login iSCSI). Use o filtro para buscar por palavras-chave ("Lost access", "Disconnected").
|
||||
|
||||
## 3. High Availability (HA) Troubleshooting
|
||||
|
||||
Se um Host falha, o HA reinicia as VMs em outro host.
|
||||
|
||||
- **Erro:** "vSphere HA agent is unreachable".
|
||||
- Significa que o vCenter não consegue falar com o agente FDM no Host.
|
||||
- _Ação:_ Botão direito no Host > **Reconfigure for vSphere HA**. Isso reinstala/reinicia o agente.
|
||||
- **Erro:** "Insufficient resources to satisfy HA failover level".
|
||||
- O cluster está cheio demais. Se um host cair, não há espaço suficiente nos outros para ligar todas as VMs.
|
||||
- _Ação:_ Adicionar mais hosts ou desligar VMs não essenciais.
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
# CLI e Troubleshooting Avançado (Nível 3)
|
||||
|
||||
## 1. Acesso SSH
|
||||
|
||||
Requer habilitação do serviço TSM-SSH no Host ou VCSA.
|
||||
|
||||
- Host: `ssh root@<esxi-ip>`
|
||||
- VCSA: `ssh root@<vcsa-ip>` (shell primário é o Appliance Shell, digite `shell` para ir pro BASH).
|
||||
|
||||
## 2. Esxtop: O Monitor em Tempo Real
|
||||
|
||||
Ferramenta essencial para análise de performance granular.
|
||||
|
||||
- Execute `esxtop` no terminal SSH do Host.
|
||||
- **Teclas de Atalho:**
|
||||
- `c`: CPU
|
||||
- `m`: Memory
|
||||
- `n`: Network
|
||||
- `d`: Disk Adapter / `u`: Disk Device / `v`: Disk VM
|
||||
- `V`: Visualizar apenas VMs
|
||||
- `f`: Adicionar/Remover colunas
|
||||
|
||||
### Colunas Críticas
|
||||
|
||||
- **%RDY (CPU Ready):** Soma dos valores de `Wait` que são "ready". Se alto (>5-10%), o host está oversubscribed.
|
||||
- **%CSTP (Co-Stop):** VM SMP (várias vCPUs) esperando sincronização. Alto? A VM tem vCPUs demais. Reduza.
|
||||
- **DAVG/cmd:** Latência do dispositivo (Storage). > 20ms é problema físico ou de SAN.
|
||||
- **KAVG/cmd:** Latência do Kernel. > 2-3ms? Host saturado de I/O ou driver ruim.
|
||||
|
||||
## 3. Logs do ESXi (/var/log/)
|
||||
|
||||
- `vmkernel.log`: Log central do kernel. Drivers, Storage, Network, HA events.
|
||||
- _grep:_ `grep -i "scsi" /var/log/vmkernel.log`
|
||||
- `hostd.log`: Log do agente de gerenciamento (Host Daemon). Comunicação com vCenter.
|
||||
- `vpxa.log`: Log do agente vCenter no host.
|
||||
- `auth.log`: Tentativas de login.
|
||||
|
||||
## 4. Comandos Essenciais (ESXCLI & VIM-CMD)
|
||||
|
||||
### Networking
|
||||
|
||||
- Listar NICs: `esxcli network nic list`
|
||||
- Ver vSwitch: `esxcli network vswitch standard list`
|
||||
- Teste de ping avançado (vmkping): `vmkping -I vmk0 8.8.8.8` (Testa conectividade da interface de gerência).
|
||||
|
||||
### VMs
|
||||
|
||||
- Listar VMs e IDs: `vim-cmd vmsvc/getallvms`
|
||||
- Estado da VM: `vim-cmd vmsvc/power.getstate <vmid>`
|
||||
- **Forçar Power Off:** `vim-cmd vmsvc/power.off <vmid>`
|
||||
- **Matar processo (Último recurso):**
|
||||
1. `esxcli vm process list` (Pega o World ID)
|
||||
2. `esxcli vm process kill --type=force --world-id=<WorldID>`
|
||||
|
||||
### Storage
|
||||
|
||||
- Rescan de adaptadores: `esxcli storage core adapter rescan --all`
|
||||
- Listar dispositivos: `esxcli storage core device list`
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
# Networking Avançado e Conceitos de NSX
|
||||
|
||||
## 1. vSphere Distributed Switch (vDS)
|
||||
|
||||
O vDS centraliza a configuração. A configuração reside no vCenter, mas o _Data Plane_ está no Host.
|
||||
|
||||
### Backup e Restore do vDS
|
||||
|
||||
O vDS é crucial. Se corromper, você perde a rede de todo o cluster.
|
||||
|
||||
- **Export Configuration:** Botão direito no vDS > Settings > Export Configuration. Faça isso após qualquer mudança grande.
|
||||
- **Restore:** Importa as configurações.
|
||||
|
||||
### LACP / LAG
|
||||
|
||||
Link Aggregation no vSphere requer configuração cuidadosa.
|
||||
|
||||
- Modo de Load Balancing no Port Group DEVE ser "Route based on IP hash" (para Static Etherchannel) ou compatível com LACP.
|
||||
- Erro comum: Configurar LACP no Switch físico e esquecer de configurar no vDS (ou vice-versa). Resultado: Rede cai ou "flapa".
|
||||
|
||||
## 2. TCP/IP Stacks
|
||||
|
||||
O ESXi 8 permite múltiplas pilhas TCP/IP.
|
||||
|
||||
- **Default:** Tráfego de gerência, vMotion (se não separado), VM traffic.
|
||||
- **vMotion Stack:** Otimizado e isolado para migração. Permite roteamento diferente da gerência.
|
||||
- **Provisioning Stack:** Para tráfego de cold migration, clone, snapshot.
|
||||
|
||||
## 3. Isolamento de Tráfego (Troubleshooting)
|
||||
|
||||
Se o vMotion falha:
|
||||
|
||||
1. Verifique se o VMkernel adapter (vmk) habilitado para vMotion está na subnet correta.
|
||||
2. Teste o MTU. Se usarem Jumbo Frames (MTU 9000), **todos** os pontos devem ter MTU 9000 (vSwitch, vmk, Switch Físico).
|
||||
- Teste: `vmkping -d -s 8972 <ip-destino>` (-d = do not fragment).
|
||||
|
||||
## 4. Conceitos Básicos de NSX (Se aplicável)
|
||||
|
||||
O NSX virtualiza a rede (L2-L7).
|
||||
|
||||
- **Overlay Networking (Geneve):** Túneis UDP que carregam tráfego L2 sobre uma rede L3 física.
|
||||
- **Distributed Firewall (DFW):** Firewall regra-por-VM, aplicado no vNIC.
|
||||
- **Troubleshooting NSX:** Se uma VM NSX não pinga:
|
||||
1. Verifique se os componentes do Host estão OK (`esxcli software vib list | grep nsx`).
|
||||
2. Traceflow: Ferramenta gráfica do NSX para simular pacotes.
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# Storage Deep Dive
|
||||
|
||||
## 1. Pluggable Storage Architecture (PSA)
|
||||
|
||||
O ESXi usa o PSA para gerenciar multipathing.
|
||||
|
||||
- **NMP (Native Multipathing Plugin):** Padrão.
|
||||
- **Path Selection Policies (PSP):**
|
||||
- **Fixed:** Usa um caminho preferido. Se cair, troca. Se voltar, volta pro preferido.
|
||||
- **MRU (Most Recently Used):** Não volta automaticamente para o preferido. Padrão para muitos storages A/P.
|
||||
- **RR (Round Robin):** Alterna I/O entre caminhos ativos. Melhor performance agregada.
|
||||
- _Dica N3:_ Verifique se o storage array recomenda alterar o IOPS limit do Round Robin (padrão 1000) para 1 (para melhor balanceamento). Comando: `esxcli storage nmp psp roundrobin deviceconfig set ...`
|
||||
|
||||
## 2. vSAN (Virtual SAN)
|
||||
|
||||
Storage definido por software usando discos locais dos hosts.
|
||||
|
||||
### Troubleshooting Básico vSAN
|
||||
|
||||
- **Skyline Health:** Monitor > vSAN > Skyline Health. É o painel de controle principal. Resolva TUDO que estiver vermelho aqui.
|
||||
- **Object Health:** Se houver "Inaccessible objects", dados estão indisponíveis (falha de >1 host/disco além da tolerância FTT).
|
||||
- **Resyncing Objects:** Após falha ou manutenção, o vSAN reconstrói dados. Isso consome I/O. Você pode limitar a banda de resync se as VMs estiverem lentas.
|
||||
|
||||
## 3. Storage I/O Control (SIOC)
|
||||
|
||||
Recurso para garantir QoS no disco.
|
||||
|
||||
- Se habilitado, o ESXi monitora a latência do datastore.
|
||||
- Serve para evitar que uma "VM barulhenta" (Noisy Neighbor) drene todo o I/O do storage.
|
||||
- _Debug:_ Se VMs estão lentas sem motivo aparente, verifique se o SIOC não está limitando artificialmente (Threshold muito baixo).
|
||||
|
||||
## 4. VMFS Locking e Metadata
|
||||
|
||||
- **VMFS-6:** Suporta recuperação automática de espaço (UNMAP) assíncrona.
|
||||
- **File Locks:** Se uma VM não liga dizendo "File locked", um host ainda está segurando o arquivo.
|
||||
- _Solução:_ Identificar qual host tem o lock (via logs `vmkernel.log` buscando o endereço MAC do locker) e reiniciar o processo de gerenciamento nele.
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Disaster Recovery e Arquitetura
|
||||
|
||||
## 1. Cluster DRS (Distributed Resource Scheduler)
|
||||
|
||||
O DRS balanceia carga.
|
||||
|
||||
### Affinity Rules (Regras de Afinidade)
|
||||
|
||||
- **VM-VM Affinity:** "Mantenha estas VMs juntas" (ex: App e DB para latência baixa).
|
||||
- **VM-VM Anti-Affinity:** "Separe estas VMs" (ex: AD Primário e AD Secundário). **CRÍTICO para disponibilidade.**
|
||||
- **VM-Host Affinity:**
|
||||
- _Required (Must):_ "VM deve rodar neste grupo de hosts". Se os hosts caírem, a VM **NÃO** liga em outro lugar. Cuidado! Use para licenciamento (ex: Oracle).
|
||||
- _Preferential (Should):_ "VM deve tentar rodar aqui". Se cair, ela migra. Mais seguro.
|
||||
|
||||
## 2. Planejamento de Capacidade (Sizing)
|
||||
|
||||
O N3 deve prever o esgotamento de recursos.
|
||||
|
||||
- **Commitment:** Quanto de vCPU/vRAM foi vendido (criado).
|
||||
- **Usage:** Quanto está sendo realmente usado.
|
||||
- **Headroom:** Quantas VMs eu ainda consigo ligar?
|
||||
- _Regra de Ouro:_ Projete o cluster para suportar a falha de 1 Host (N+1). Se você tem 3 hosts e 1 falha, os 2 restantes devem aguentar 100% da carga. Se o uso de RAM passar de 66% (num cluster de 3), você não tem redundância real.
|
||||
|
||||
## 3. Restore de vCenter (VCSA)
|
||||
|
||||
Se o vCenter morrer, o cluster continua rodando (HA e vSwitch funcionam), mas você perde gerenciamento (vMotion, criar VMs).
|
||||
|
||||
### Restore via VAMI
|
||||
|
||||
1. Monte a ISO do instalador do VCSA numa máquina de admin.
|
||||
2. Rode o instalador > Opção **Restore**.
|
||||
3. Aponte para o backup de arquivo (File-based Backup) que deve ter sido configurado previamente no VAMI (`https://vcsa-ip:5480`).
|
||||
4. O processo sobe um novo appliance e injeta a configuração.
|
||||
|
||||
## 4. Host Down Scenarios (Cenários de Falha)
|
||||
|
||||
- **Host Isolado (Isolation):** O Host perde rede mas continua ligado.
|
||||
|
||||
- Configuração de HA "Response for Host Isolation":
|
||||
- _Power Off and Restart VMs:_ O host desliga as VMs, liberando o lock do disco, para que outros hosts as reiniciem. (Recomendado para iSCSI/NFS).
|
||||
- _Disabled:_ As VMs continuam rodando no host isolado. Se o storage também caiu para ele, as VMs travam.
|
||||
|
||||
- **PSOD (Purple Screen of Death):** Tela roxa no ESXi.
|
||||
- Tire foto/screenshot da tela (ou pegue o Core Dump se configurado).
|
||||
- Anota as mensagens de erro (ex: `LINT1/NMI`, `PF Exception`).
|
||||
- Geralmente é falha de Hardware (RAM/CPU) ou Driver com bug.
|
||||