Initial commit: Project structure and documentation assets

This commit is contained in:
João Pedro Toledo Goncalves 2026-01-22 23:20:15 -03:00
commit 549b30a527
68 changed files with 2994 additions and 0 deletions

300
.gemini/GEMINI.md Normal file
View File

@ -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:** `![Print](C:/Temp/imagem.png)` ou `![Print](imagem.png)`
* **Correto:** Salve em `[Pasta do Projeto]/assets/imagem.png` e use `![Print](assets/imagem.png)`.
* **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
![Descrição da Imagem](assets/nome_da_imagem.png)
```
> **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 |
| :--- | :--- |
| `![](C:/caminho/absoluto.png)` | `![](assets/imagem.png)` |
| 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**.
![Print da Tela de Configuração](caminho/para/imagem.png)
## 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?
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

444
.gemini/convert_to_pdf.py Normal file
View File

@ -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('![') and '](' in line):
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)

29
.gitignore vendored Normal file
View File

@ -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?

23
README.md Normal file
View File

@ -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.

View File

@ -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).
![Tela de Login Webmail](assets/webmail_login.png)
> **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**.
![Tela Adicionar Conta Outlook](assets/outlook_mobile_mockup.png)
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**.
![Tela Configuração Nativa](assets/native_mail_mockup.png)
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?

View File

@ -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**.
![Menu de Configurações](assets/settings_menu_ferias_unique_1769126673.png)
**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.
![Tela de Configuração](assets/config_screen_ferias_unique_1769126693.png)
## 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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -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*).
![Tela de Notificações de Entrega ECP](assets/relatorios_entrega_ecp.png)
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?

View File

@ -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).
![Tela de Bloqueio no AD](assets/ad_disable_account.png)
### 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?

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

View File

@ -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.
![Dashboard do ECP](assets/dashboard_ecp.png)
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").
![Aba de Uso da Caixa](assets/uso_caixa.png)
> **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**.
![Configuração de Cotas](assets/config_cotas.png)
---
**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**.
![Recursos e Arquivamento](assets/recursos_arquivamento.png)
> 🚀 **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?

View File

@ -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.
![Dashboard do ECP](assets/ecp_dashboard.png)
### 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?

View File

@ -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).
![Tela de Delegação no ECP](assets/ecp_delegation.png)
## 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?

View File

@ -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.
![Lista de Contatos OWA](assets/owa_address_book.png)
### 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?

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -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.
![Exemplo do Menu SConfig](assets/sconfig_menu.png)
### 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`)?

View File

@ -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).

View File

@ -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ê)._

View File

@ -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.

View File

@ -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`

View File

@ -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.

View File

@ -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)}}
```

View File

@ -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
```

View File

@ -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._

View File

@ -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

View File

@ -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.

View File

@ -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).

View File

@ -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`.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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).

View File

@ -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.

View File

@ -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%").

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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`

View File

@ -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.

View File

@ -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.

View File

@ -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.